第一篇文章,请原谅任何违反论坛规则的行为。
我正在尝试使用DHL API跟踪 cargo 。
这是我目前拥有的代码
$client = new SoapClient("https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl");
//$header = new SoapHeader("https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl", "APICredentials", $auth, false);
//$client->__setLocation('https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl');
$header_part = '<soapenv:Envelope xmlns:rat="https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-
secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-5" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
wss-wssecurity-utility-1.0.xsd">
<wsse:Username>myusername</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-
1.0#PasswordText">mypassword</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-
1.0#Base64Binary">eUYebYfsjztETJ4Urt8AJw==</wsse:Nonce>
<wsu:Created>2010-02-12T17:40:39.124Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>';
$soap_var_header = new SoapVar( $header_part, XSD_ANYXML, null, null, null );
$soap_header = new SoapHeader( 'https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack', 'wsse', $soap_var_header, true );
$client->__setSoapHeaders($soap_header);
如果我做
var_dump($ client-> __ getFunctions())
我得到以下内容:
array(1) { [0]=> string(83) "trackShipmentRequestResponse trackShipmentRequest(trackShipmentRequest $parameters)" }
我的问题确实是没有人知道如何格式化trackShipmentRequest
$client->trackShipmentRequest(what goes here);
这是DHL给我的xml示例,可用于soapui
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:trac="http://scxgxtt.phx-dc.dhl.com/glDHLExpressTrack/providers/services/trackShipment" xmlns:dhl="http://www.dhl.com">
<soapenv:Header/>
<soapenv:Body>
<trac:trackShipmentRequest>
<trackingRequest>
<dhl:TrackingRequest>
<Request>
<ServiceHeader>
<MessageTime>2013-05-13T10:17:20Z</MessageTime>
<MessageReference>c68d7150bbd611e2b09ad103c98eed12</MessageReference>
</ServiceHeader>
</Request>
<!--Optional:-->
<AWBNumber>
<!--1 or more repetitions:-->
<ArrayOfAWBNumberItem>2786552086</ArrayOfAWBNumberItem>
</AWBNumber>
<!--Optional:-->
<LPNumber>
<!--1 or more repetitions:-->
<ArrayOfTrackingPieceIDItem>?</ArrayOfTrackingPieceIDItem>
</LPNumber>
<LevelOfDetails>ALL_CHECK_POINTS</LevelOfDetails>
<!--Optional:-->
<PiecesEnabled>B</PiecesEnabled>
</dhl:TrackingRequest>
</trackingRequest>
</trac:trackShipmentRequest>
</soapenv:Body>
</soapenv:Envelope>
我意识到该站点上有类似的主题,但似乎无济于事。
最佳答案
您在第一行中使用的WSDL端点
new SoapClient("https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl");
甚至都没有解决。我认为这不会起作用。通常,如果仅将https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl粘贴到浏览器中,就应该可以从我所知道的信息中看到大多数SOAP服务的定义。
根据user555的注释,该端点可能已被弃用,因此您应该与DHL联系。
关于php - DHL跟踪装运请求-WSDL-PHP-SOAP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16860991/