首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >myDHL API响应

myDHL API响应
EN

Stack Overflow用户
提问于 2020-04-22 08:30:00
回答 2查看 1.4K关注 0票数 0

我正在使用myDHL API并从他们的API中获得一个奇怪的响应。他们的支持没有帮助,所以这里需要一些帮助。

我的请求XML是:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<ShipmentRequest xsi:noNamespaceSchemaLocation="ShipmentMsgRequest.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <shipreq:ShipmentRequest>
        <RequestedShipment>
            <ShipmentInfo>
                <DropOffType>REGULAR_PICKUP</DropOffType>
                <ServiceType>U</ServiceType>
                <Account>12345</Account>
                <Currency>USD</Currency>
                <UnitOfMeasurement>SI</UnitOfMeasurement>
                <PackagesCount >1</PackagesCount>
                <LabelType>PDF</LabelType>
                <LabelTemplate>ECOM26_84_001</LabelTemplate>
            </ShipmentInfo>
            <ShipTimestamp></ShipTimestamp>
            <PaymentInfo>DAP</PaymentInfo>
            <InternationalDetail>
                <Commodities>
                    <NumberOfPieces>1</NumberOfPieces>
                    <Description>1</Description>
                    <Quantity>1</Quantity>
                    <CustomsValue>1.00</CustomsValue>
                </Commodities>
                <Content>1</Content>
            </InternationalDetail>
            <Ship>
                <Shipper>
                    <Contact>
                        <PersonName>test</PersonName>
                        <CompanyName>test1</CompanyName>
                        <PhoneNumber>34324324</PhoneNumber>
                    </Contact>
                    <Address>
                        <StreetLines>address test/StreetLines>
                        <City>Singapore</City>
                        <PostalCode>343333</PostalCode>
                        <CountryCode>SG</CountryCode>
                    </Address>
                </Shipper>
                <Recipient>
                    <Contact>
                        <PersonName>John</PersonName>
                        <CompanyName>ABC Worldwide</CompanyName>
                        <PhoneNumber>1234567</PhoneNumber>
                    </Contact>
                    <Address>
                        <StreetLines>Private Bag 92019.Auckland Mail Centre.</StreetLines>
                        <City>Auckland</City>
                        <PostalCode>1011</PostalCode>
                        <CountryCode>NZ</CountryCode>
                    </Address>
                </Recipient>
            </Ship>
            <Packages><RequestedPackages number=1>
                    <InsuredValue>1.00</InsuredValue>
                    <Weight>1.00</Weight>
                    <Dimensions>
                        <Length>1</Length>
                        <Width>1</Width>
                        <Height>1</Height>
                    </Dimensions>
                    <CustomerReferences>2313700</CustomerReferences>
                </RequestedPackages></Packages>
        </RequestedShipment>
    </shipreq:ShipmentRequest>

我也把头像

代码语言:javascript
复制
             <wsse:UsernameToken wsu:Id="Example">
             <wsse:Username>test</wsse:Username>
            <wsse:Password Type="wsse:PasswordText">test1</wsse:Password>
            <wsu:Created>2020-04-21T14:10:50Z</wsu:Created>';
            </wsse:UsernameToken>

我使用的URL是https://wsbexpress.dhl.com:443/sndpt/expressRateBook

我使用curl并将请求和头放在

代码语言:javascript
复制
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $strRequest)
$result = curl_exec($ch);

我得到的回应是

代码语言:javascript
复制
HTTP/1.1 100 Continue

HTTP/1.1 500 Internal Server Error
Date: Tue, 21 Apr 2020 11:18:38 GMT
Server: 
Content-Length: 2122
Connection: close
X-CorrelationID: Id-8ed69e5e114fd399f8bb6d1d 0
Accept: */*
ClientSide: 202.47.35.205
Content-Type: application/x-www-form-urlencoded
Set-Cookie: BIGipServer~WSB~pl_wsb-express-chd.dhl.com_443=292047013.64288.0000; path=/; Httponly; Secure

<?xml version="1.0" encoding="UTF-8"?>
<ShipmentRequest xsi:noNamespaceSchemaLocation="ShipmentMsgRequest.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <shipreq:ShipmentRequest>
        <RequestedShipment>
            <ShipmentInfo>
                <DropOffType>REGULAR_PICKUP</DropOffType>
                <ServiceType>U</ServiceType>
                <Account>12345</Account>
                <Currency>USD</Currency>
                <UnitOfMeasurement>SI</UnitOfMeasurement>
                <PackagesCount >1</PackagesCount>
                <LabelType>PDF</LabelType>
                <LabelTemplate>ECOM26_84_001</LabelTemplate>
            </ShipmentInfo>
            <ShipTimestamp></ShipTimestamp>
            <PaymentInfo>DAP</PaymentInfo>
            <InternationalDetail>
                <Commodities>
                    <NumberOfPieces>1</NumberOfPieces>
                    <Description>1</Description>
                    <Quantity>1</Quantity>
                    <CustomsValue>1.00</CustomsValue>
                </Commodities>
                <Content>1</Content>
            </InternationalDetail>
            <Ship>
                <Shipper>
                    <Contact>
                        <PersonName>test</PersonName>
                        <CompanyName>test1</CompanyName>
                        <PhoneNumber>34324324</PhoneNumber>
                    </Contact>
                    <Address>
                        <StreetLines>address test/StreetLines>
                        <City>Singapore</City>
                        <PostalCode>343333</PostalCode>
                        <CountryCode>SG</CountryCode>
                    </Address>
                </Shipper>
                <Recipient>
                    <Contact>
                        <PersonName>John</PersonName>
                        <CompanyName>ABC Worldwide</CompanyName>
                        <PhoneNumber>1234567</PhoneNumber>
                    </Contact>
                    <Address>
                        <StreetLines>Private Bag 92019.Auckland Mail Centre.</StreetLines>
                        <City>Auckland</City>
                        <PostalCode>1011</PostalCode>
                        <CountryCode>NZ</CountryCode>
                    </Address>
                </Recipient>
            </Ship>
            <Packages><RequestedPackages number=1>
                    <InsuredValue>1.00</InsuredValue>
                    <Weight>1.00</Weight>
                    <Dimensions>
                        <Length>1</Length>
                        <Width>1</Width>
                        <Height>1</Height>
                    </Dimensions>
                    <CustomerReferences>2313700</CustomerReferences>
                </RequestedPackages></Packages>
        </RequestedShipment>
    </shipreq:ShipmentRequest>

我甚至尝试使用下面的请求使用Soap类

代码语言:javascript
复制
$request=<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header><wsse:Security soapenv:mustunderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-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 > test</wsse:Username >           
            <wsse:Password type = "PasswordText" >test</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 > 2020 - 04 - 24 20:17:21 </wsu:Created >
         </wsse:UsernameToken >
      </wsse:Security >
</soap:Header>
   <soap:Body>
      <ShipmentRequest xmlns="http://scxgxtt.phx-dc.dhl.com/euExpressRateBook/ShipmentMsgRequest">
         <MessageId xmlns="">c68d7150bbd611e2b09ad103c98eed12</MessageId>
         <ClientDetail xmlns=""/>
         <RequestedShipment xmlns="">
            <ShipmentInfo>
               <DropOffType>REGULAR_PICKUP</DropOffType>
               <ServiceType>P</ServiceType>
               <Account>4324324324</Account>
               <Currency>EUR</Currency>
               <UnitOfMeasurement>SI</UnitOfMeasurement>
            </ShipmentInfo>
            <ShipTimestamp>2019-10-24T14:01:22GMT+00:00</ShipTimestamp>
            <PaymentInfo>DDU</PaymentInfo>
            <InternationalDetail>
               <Commodities>
                  <NumberOfPieces>1</NumberOfPieces>
                  <Description>Documents</Description>
                  <CustomsValue>10</CustomsValue>
                  <CountryOfManufacture>ES</CountryOfManufacture>
               </Commodities>
            </InternationalDetail>
            <Ship>
               <Shipper>
                  <Contact>
                     <PersonName>Karlos Espana</PersonName>
                     <CompanyName>SHIPING LTD</CompanyName>
                     <PhoneNumber>3848211</PhoneNumber>
                  </Contact>
                  <Address>
                     <StreetLines>DEL STREETO 9</StreetLines>
                     <City>SANT CUGAT DEL VALLES</City>
                     <PostalCode>08173</PostalCode>
                     <CountryCode>ES</CountryCode>
                  </Address>
               </Shipper>
               <Recipient>
                  <Contact>
                     <PersonName>Martin Soltys</PersonName>
                     <CompanyName>DHL</CompanyName>
                     <PhoneNumber>731731731</PhoneNumber>
                  </Contact>
                  <Address>
                     <StreetLines>V Parku 2308/10</StreetLines>
                     <City>Prague</City>
                     <PostalCode>14800</PostalCode>
                     <CountryCode>CZ</CountryCode>
                  </Address>
               </Recipient>
            </Ship>
            <Packages>
               <RequestedPackages number="1">
                  <Weight>1</Weight>
                  <Dimensions>
                     <Length>35</Length>
                     <Width>25</Width>
                     <Height>1</Height>
                  </Dimensions>
                  <CustomerReferences>LC MAGIC NUMBER 0037</CustomerReferences>
               </RequestedPackages>
            </Packages>
         </RequestedShipment>
      </ShipmentRequest>
   </soap:Body>
</soap:Envelope>



$url = 'https://wsbexpress.dhl.com:443/sndpt/expressRateBook';
    $action = 'createShipmentRequest';
    try {
        $client = new SoapClient($path_to_wsdl);
        $response =$client->createShipmentRequest($request);
    } catch (SoapFault $fault) {
        echo "<h2>SOAP Fault!</h2><p>";
        echo "FaultCode: {$fault->faultcode} <br/>";
        echo "FaultString: {$fault->faultstring} <br/>";
        echo"</p/>";
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-24 21:45:26

解决了这个问题。我必须将内容类型设置为text/xml

代码语言:javascript
复制
$opts = array(
            'header'=> "Content-Type:text/xml"
        );
        $options = array(
            'encoding' => 'UTF-8',
            'verifypeer' => false,
            'verifyhost' => false,
            'soap_version' => SOAP_1_2,
            'trace' => 1,
            'exceptions' => 1,
            'connection_timeout' => 180,
            'stream_context' => stream_context_create($opts),
            'cache_wsdl' => WSDL_CACHE_NONE,
        );
            $client = new SoapClient($path_to_wsdl,$options);
票数 0
EN

Stack Overflow用户

发布于 2020-04-24 12:53:53

你的要求是错误的。您应该向DHL发送关于它们在格式错误的XML上响应HTTP 500 Internal Server Error的bugreport,因为正确的响应是HTTP 400 Bad Request

在您看来,这看起来是有效的XML吗?

代码语言:javascript
复制
                <Address>
                    <StreetLines>address test/StreetLines>
                    <City>Singapore</City>
                    <PostalCode>343333</PostalCode>
                    <CountryCode>SG</CountryCode>
                </Address>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61360599

复制
相关文章

相似问题

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