[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Consuming DHL Webservices



Hi Pascal,

I'm looking at your example a bit closer, and I see that you are using 
the following SOAP namespace:

xmlns:soap="http://www.w3.org/2003/05/soap-envelope";

This namespace indicates that you are using SOAP version 1.2.  In my 
experience, this is rare -- SOAP 1.2 never caught on, and most folks use 
SOAP 1.1 instead.  But, HTTPAPI will work with either, if coded correctly.

In SOAP version 1.1, the Soap Action was transmitted in it's own HTTP 
header named "SoapAction".  HTTPAPI provides a parameter for this to 
accomodate people who wish to send that header.  It would appear that 
you are using that header to set your SoapAction.  The problem is:  
That's for SOAP version 1.1.   According to your namespace, you are 
trying to use SOAP version 1.2.

In version 1.2, the Soap Action is a part of the Content-Type header.  
So if you wish to use SOAP version 1.2, you need to code the following 
in the peContentType parameter to HTTPAPI:

    'Content-Type: 
application/soap+xml;charset=UTF-8;action="urn:createShipmentDD"'

You also need to ensure that the peSoapAction parameter is NOT passed 
for 1.2 -- it's not used in that version of SOAP.

Alternately, you can re-generate your XML (with SoapUI) and use the 
version 1.1 message.  If you do that, the namespace should be:

    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";

And in that case, the Content-type should be :

    'text/xml;charset=UTF-8'

And the SoapACtion should be:

    '"urn:createShipmentDD"'

Hope that helps.

On 6/11/2012 2:16 AM, Pascal Kirscher wrote:
> Hi Scott,
>
> Regarding "<de:DeveloperAuthentification>" section :  I have found 
> othing about it in DHL's documentation and the different sample 
> requests that I have got from DHL didn't mention this section. That's 
> why I have omitted it.
> I thought this will make no problem as the request worked fine using 
> SoapUI.
>
> However I have sent an e-mail to DHL technical support about his.
>
> In the meantime I have also run the request replacing SOAPaction: 
> http:/test-intraship.dhl.com/ws/1_0/de/ISService/createShipmentDD  
> by    urn:createShipmentDD
> Same result ... (the only thing that has changed in the debug file : 
> Content-Length: 1833  instead of Content-Length: 1830.
>
> In the debug file, I have found no error : If I am right, in the 
> following sequence, everything seems to be ok,   or does the line
> SetError() £0:
> <ns4:GetVersionResponse xmlns:ns4="http://de.ws.intraship";><Version 
> xmlns="http://dhl.de/webservice/cisbase";><majorRelease>1</majorRelease><minorRelease>0</minorRelease><build>14</build></Version></ns4:GetVersionResponse>
>
> mean that something is wrong ?
>
> Thanks,
>
> Pascal
>
> Le 08/06/2012 16:27, Scott Klement a écrit :
>> Hi Pascal,
>>
>> In your HTTPAPI debug file, I see this:
>>
>> SOAPAction:
>> http:/test-intraship.dhl.com/ws/1_0/de/ISService/createShipmentDD
>>
>> That doesn't match the SoapUI SoapAction, which is set to
>> "urn:createShipmentDD".  Please try changing your HTTPAPI SoapAction to
>> "urn:createShipmentDD".   Your said in an earlier e-mail that you had
>> done this already -- but, the HTTPAPI log file still shows an http:  URI
>> for the SoapAction  (and an invalid one at that!).
>>
>> Also, the SOAP message generated from the WSDL  contains these eleements
>> for "Authentification"
>>
>> <de:DeveloperAuthentification>
>> <DEVID>?</DEVID>
>> <APPID>?</APPID>
>> <CERTID>?</CERTID>
>> </de:DeveloperAuthentification>
>> <cis:Authentification>
>> <cis:user>?</cis:user>
>> <cis:signature>?</cis:signature>
>> <!--Optional:-->
>> <cis:accountNumber>?</cis:accountNumber>
>> <cis:type>0</cis:type>
>> </cis:Authentification>
>>
>> However, the one in your code looks like this:
>>
>> <cis:Authentification>
>> <cis:user>Sterling</cis:user>
>> <cis:signature>Online24</cis:signature>
>> <cis:type>0</cis:type>
>> </cis:Authentification>
>>
>> You seem to be missing the entire<de:DeveloperAuthentificaton>  element
>> and all of it's contents.
>>
>> I didn't look over the entire transaction, I stopped after I noticed the
>> Authentification doesn't match.  I'm hoping this is enough information
>> to point you in the right direction?
>>
>>
>> On 6/8/2012 2:36 AM, Pascal Kirscher wrote:
>>>      Hi Scott,
>>>      Many thanks for your quick answer  (and for the great tools you
>>>      provide).
>>>      The SoapAction that I have tried  (urn:createShipmentDD) is the 
>>> one
>>>      that is displayed in the SoapUI request  :
>>>      POST [1]http://test-intraship.dhl.com/ws/1_0/de/ISService HTTP/1.1
>>>      Accept-Encoding: gzip,deflate
>>>      Content-Type: text/xml;charset=UTF-8
>>>      SOAPAction: "urn:createShipmentDD"
>>>      I have tried in different ways :
>>> 'urn:createShipmentDD',   
>>> '[2]http://test-intraship.dhl.com/ws/1_0/de/ISService/
>>> createShipmentDD' ,  'createShipmentDD'
>>>
>>>      To make things easier, I send :
>>>      - DHL's wdsl
>>>      - a createshipmentDD request that works with SoapUI  and the 
>>> response
>>>      - the httpapi_debug.txt file that results when I run my program
>>>      Again, thanks a lot for your help.
>>>      Pascal
>>>      Le 08/06/2012 00:18, Scott Klement a écrit :
>>>
>>> Hi Pascal,
>>>
>>> Surely if SoapUI is working, you can look at the SoapAction that it is
>>> using, and send the same thing via HTTPAPI?
>>>
>>> Make sure you're also updating the URI in addition to the SoapAction.
>>> I'm not familiar with DHL's web service, but most sites that I use
>>> specify both a different URI and a different SoapAction in order to
>>> access a different operation.
>>>
>>> If that doesn't work, please provide the WSDL file you're working with
>>> (I don't use DHL, so I don't have access to it, myself) and an
>>> httpapi_debug.txt file so I can compare them and look for something 
>>> that
>>> doesn't match.
>>>
>>> Thanks!
>>>
>>>
>>>
>>>
>>> On 6/7/2012 4:32 AM, Pascal Kirscher wrote:
>>>
>>>       Hello,
>>>       I am new to webservices.  I need to use DHL webservices, in 
>>> order to
>>>       create shipments, get labels, etc...
>>>       So, first I have tried some simple webservices, like 
>>> [1]stockquote,
>>>       [2]currency convertor (with IBM's wdsl2rpg and with Scott's 
>>> HTTPAPI),
>>>       and this worked fine with both the tools.
>>>       With DHL WebService, I first tried the GetVersion opération, 
>>> and this
>>>       also was successful.
>>>       But, I am now blocked with the other operation  
>>> (createShipmentDD,
>>>       getLabelDD) :  I have checked my requests using SoapUI, and 
>>> this works
>>>       fine, but not when I try to consume the webservice using 
>>> HTTPAPI in a
>>>       RPG program
>>>       I guess that the problem comes from the parameters when I call 
>>> the
>>>       http_url_post_xml function, and especially the last one, the
>>>       SOAPaction.
>>>       Based on the values that I retrieve from SoapUI, hereafter, the
>>>       beginning of the request :
>>>       POST [3][3]http://test-intraship.dhl.com/ws/1_0/de/ISService 
>>> HTTP/1.1
>>>       Accept-Encoding: gzip,deflate
>>>       Content-Type: text/xml;charset=UTF-8
>>>       SOAPAction: "urn:createShipmentDD"
>>>       I have tried to call it this way :
>>>       rc = http_url_post_xml(
>>>       '[4][4]http://test-intraship.dhl.com/ws/1_0/de/ISService'
>>>            : %addr(SOAP) + 2
>>>            : %len(SOAP)
>>>            : *NULL
>>>            : %paddr(Incoming)
>>>            : %addr(value)
>>>            : HTTP_TIMEOUT
>>>            : HTTP_USERAGENT
>>>            : 'application/xml'
>>>            : 'urn:createShipmentDD');
>>>
>>>       I have tried different values ('urn:createShipmentDD',
>>>       
>>> '[5][5]http://test-intraship.dhl.com/ws/1_0/de/ISService/createShipmentDD'
>>>       )
>>>       but each time, I get the result of the GetVersion operation 
>>> (which must
>>>       be the default action I suppose)
>>>       I would be very grateful if someone could help me ...
>>>       Pascal
>>>
>>>
>>>
>>> -----------------------------------------------------------------------
>>> This is the FTPAPI mailing list.  To unsubscribe, please go to:
>>> [6]http://www.scottklement.com/mailman/listinfo/ftpapi
>>> -----------------------------------------------------------------------
>>>
>>> References
>>>
>>>      1. http://test-intraship.dhl.com/ws/1_0/de/ISService
>>>      2. 
>>> http://test-intraship.dhl.com/ws/1_0/de/ISService/createShipmentDD
>>>      3. http://test-intraship.dhl.com/ws/1_0/de/ISService
>>>      4. http://test-intraship.dhl.com/ws/1_0/de/ISService
>>>      5. 
>>> http://test-intraship.dhl.com/ws/1_0/de/ISService/createShipmentDD
>>>      6. http://www.scottklement.com/mailman/listinfo/ftpapi
>>>
>>>
>>>
>>> -----------------------------------------------------------------------
>>> This is the FTPAPI mailing list.  To unsubscribe, please go to:
>>> http://www.scottklement.com/mailman/listinfo/ftpapi
>>> -----------------------------------------------------------------------
>> -----------------------------------------------------------------------
>> This is the FTPAPI mailing list.  To unsubscribe, please go to:
>> http://www.scottklement.com/mailman/listinfo/ftpapi
>> -----------------------------------------------------------------------
>
>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------