首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DHL trackShipmentRequest - WDSL - PHP - SOAP

DHL trackShipmentRequest - WDSL - PHP - SOAP
EN

Stack Overflow用户
提问于 2013-05-31 23:37:14
回答 1查看 6.7K关注 0票数 5

第一篇帖子,所以请原谅任何违反论坛规则的行为,等等。我正在尝试使用DHL api来跟踪发货。

下面是我目前拥有的代码

代码语言:javascript
复制
$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())

我得到了以下信息:

代码语言:javascript
复制
array(1) { [0]=> string(83) "trackShipmentRequestResponse trackShipmentRequest(trackShipmentRequest $parameters)" }

我的问题是,有谁知道如何格式化trackShipmentRequest

代码语言:javascript
复制
$client->trackShipmentRequest(what goes here);

下面是DHL提供给我的在soapui中使用的xml的示例。

代码语言:javascript
复制
    <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>

我意识到在这个网站上也有类似的话题,但似乎都没有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-06 05:18:23

您在第一行中使用的WSDL端点

代码语言:javascript
复制
new SoapClient("https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl");

甚至不能解决问题。我觉得不行。通常,如果您只是将https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl粘贴到浏览器中,就我所知,您应该能够看到大多数SOAP服务的定义。

根据user555的评论,端点可能已被弃用,因此您应与DHL联系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16860991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档