SOAP Action WSDL

后端 未结 8 1179
再見小時候
再見小時候 2020-12-30 02:18

I\'m trying to implement a client for National Rail Enquiries\' SOAP Service (http://www.livedepartureboards.co.uk/ldbws/).

I stick the WSDL (http://realtime.nationa

8条回答
  •  無奈伤痛
    2020-12-30 02:50

    I have come across exactly the same problem when trying to write a client for the National Rail SOAP service with Perl.

    The problem was caused because the Perl module that I'm using 'SOAP::Lite' inserts a '#' in the SOAPAction header ...

    SOAPAction: "http://thalesgroup.com/RTTI/2008-02-20/ldb/#GetDepartureBoard"
    

    This is not interpreted correctly by .NET servers. I found this out from Example 3-19 in O'Reilly's Programming Web Services with SOAP . The solution was given below in section 3-20, namely you need to explicitly specify the format of the header with the 'on_action' method.

    print SOAP::Lite
      -> uri('urn:Example1')
      -> on_action(sub{sprintf '%s/%s', @_ })
      -> proxy('http://localhost:8080/helloworld/example1.asmx')
      -> sayHello($name)
      -> result . "\n\n";
    

    My guess is that soapclient.com is using SOAP::Lite behind the scenes and so are hitting the same problem when talking to National Rail.

    The solution is to write your own client so that you have control over the format of the SOAPAction header ... but you've probably done that already.

提交回复
热议问题