php 如何在php中使用soap调用Web服务

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20118839/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 02:53:55  来源:igfitidea点击:

how to call web services using soap in php

phpsoap

提问by dipanshu

The following is a sample SOAP 1.1 request and response.:
POST /atservices/1.5/atws.asmx HTTP/1.1
Host: webservices2.autotask.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://autotask.net/ATWS/v1_5/getZoneInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
  <getZoneInfo xmlns="http://autotask.net/ATWS/v1_5/">
  <UserName>string</UserName>
  </getZoneInfo>
 </soap:Body>
</soap:Envelope>

we want to call web services of autotask using soap in php.can we get example for it how we should call soap client.

我们想在php中使用soap调用autotask的web服务,我们可以得到它的例子,我们应该如何调用soap客户端。

Its output should be like this :

HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length

HTTP/1.1 200 OK 内容类型:text/xml;charset=utf-8 内容长度:长度

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    

xmlns:xsd="http://www.w3.org/2001/XMLSchema"    
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
 <getZoneInfoResponse xmlns="http://autotask.net/ATWS/v1_5/">
  <getZoneInfoResult>
    <URL>string</URL>
    <ErrorCode>int</ErrorCode>
    <DataBaseType>string</DataBaseType>
    <CI>int</CI>
  </getZoneInfoResult>
 </getZoneInfoResponse>
 </soap:Body>
 </soap:Envelope>

回答by Anthony

Use the PHP native SoapClientalong with the service WSDL, like so:

将 PHP 原生SoapClient与服务 WSDL 一起使用,如下所示:

$atservices_wsdl = "https://www.autotask.net/atservices/1.5/atws.wsdl";
$atservices_client = new SoapClient($atservices_wsdl);

$zone_info = $atservices_client->getZoneInfo("SomeUserName");

print_r($zone_info); // review the returned object converted from SOAP response.

echo $zone_info->DataBaseType; // this might work if it's not behind a Response object.

回答by Ben Fortune

At the very least, you should be aiming for something like this. More can be found here.

至少,你应该瞄准这样的事情。可以在这里找到更多信息。

$soap = new SoapClient('link/to/.wsdl');
$result = $soap->__soapCall('getZoneInfo', array('UserName' => $username));
var_dump($result);