2013-05-31 119 views
4

第一篇文章,原諒任何違反論壇規則等 我想使用DHL API跟蹤貨件。DHL trackShipmentRequest - WDSL - PHP - SOAP

這裏是代碼,我目前

$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($客戶 - > __ getFunctions())

我得到如下:

array(1) { [0]=> string(83) "trackShipmentRequestResponse trackShipmentRequest(trackShipmentRequest $parameters)" } 

我的問題確實是沒有人知道如何格式化trackShipmentRequest

$client->trackShipmentRequest(what goes here); 

這裏是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> 

使用由DHL給我的XML的一個例子,我知道有這個網站了類似的話題,但似乎沒有任何幫助。

+0

我認爲DHL的SOAP API已經停產。我無法從'wsbuat.dhl.com'獲得任何XML輸出。我認爲你最好使用[DHL XML服務](http://www.dhl.com/en/express/resource_center/integrated_shipping_solutions.html)。 – user555

回答

1

您使用的是您的第一線

new SoapClient("https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl"); 

的WSDL端點甚至沒有解決。我不認爲它會起作用。通常,如果您只是在瀏覽器中粘貼https://wsbuat.dhl.com:8300/gbl/glDHLExpressTrack?wsdl,您應該可以看到我所瞭解的大多數SOAP服務的定義。

根據user555評論,端點可能已被棄用,因此您應聯繫DHL。

+0

我認爲這個問題已經打開了足夠長的時間。我相信,因爲我在西班牙,DHL正在提供一箇舊的棄用服務,他們幾乎沒有好的文檔。我相信你所說的可能是正確的。無論如何已經有一段時間了,但我正在清除舊的問題。 –