【发布时间】:2011-11-13 05:03:38
【问题描述】:
我正在尝试使用 PHP 和 SOAP 创建一个 UPS Freight Rating Web 服务。 UPS 为 SOAP 客户端提供了一个 WSDL(我在下面粘贴了它的重要部分)。
我的问题是,如何构造 XML 文档以使用 SOAP 客户端发送?我已经看到关于是否将我的请求格式化为 PHP 数组或巨型字符串的相互矛盾的报告。一旦构建了这个文档,应该如何通过我在 PHP 中创建的 SOAP 客户端发出请求?
WSDL 的一部分:
<wsdl:binding name="FreightRateBinding" type="tns:FreightRatePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="ProcessFreightRate">
<soap:operation soapAction="http://onlinetools.ups.com/webservices/FreightRateBinding/v1.0" style="document"/>
<wsdl:input name="RateRequest">
<soap:body parts="Body" use="literal"/>
<soap:header message="tns:RateRequestMessage" part="UPSSecurity" use="literal">
<soap:headerfault message="tns:RateErrorMessage" part="RateError" use="literal"/>
</soap:header>
</wsdl:input>
<wsdl:output name="RateResponse">
<soap:body parts="Body" use="literal"/>
</wsdl:output>
<wsdl:fault name="RateError">
<soap:fault name="RateError" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
到目前为止,我的 XML 文档的一部分:
<?xml version="1.0" ?>
<FreightRateRequest>
<Request>
<RequestOption>1</RequestOption>
</Request>
<ShipFrom>
<Address>
<Name>Test</Name>
<AddressLine1>17 MacDade Blvd</AddressLine1>
<City>Collingdale</City>
<PostalCode>19023</PostalCode>
<CountryCode>US</CountryCode>
<Phone>
<Number>1-800-249-0011</Number>
</Phone>
</Address>
</ShipFrom>
<ShipperNumber>21W17V</ShipperNumber>
<ShipTo>
<Name>Test</Name>
<AddressLine1>14908 Sandy Lane</AddressLine1>
<City>San Jose</City>
<PostalCode>95124</PostalCode>
<CountryCode>US</CountryCode>
</ShipTo>
PHP,到目前为止:
$mySOAP = new SoapClient("FreightRate.wsdl", $myOptionsArray);
任何帮助将不胜感激。如果需要,我还将回复任何其他信息。
【问题讨论】:
-
您可以在您的 wsdl 上运行它并在此处发布有关 ProcessFreightRate 的部分吗? $client = new SoapClient('yourwsdl'); var_dump($client->__getTypes());
-
这只会返回 XML 模式吗?如果您愿意,我可以发布其中的一部分,因为标记比 var_dump() 吐出的要干净得多。
标签: php xml web-services soap