Ik heb een wsdl op een server draaien die gedeployed is door glassfish.
Deze wsdl kan met succes vanuit python en java aangeroepen worden en resultaten worden verkregen.
Echter als ik Perl gebruik komen de argumenten die perl meestuurd nooit aan op de server en geeft de server daardoor geen goede response.
Dit zou twee regels moeten genereren waarbij bij de eerste regel "world" terug komt, en bij de tweede een regel die aanduid dat hellowithoutparameters methode is aangeroepen. Echter komt alleen de tweede regel terug.
In de server log is dan ook alleen te zien dat de methodes aangeroepen worden met 'null' argumenten.
Ook dit helpt niet.
De soap request die perl genereerd is als volgt.
Wat Glassfish als voorbeeld aangeeft ziet er echter zo uit.
De python code die wel werkt is als volgt:
Ik heb meerdere dingen geprobeerd maar ik kom er niet uit. Kunnen jullie helpen?
Deze wsdl kan met succes vanuit python en java aangeroepen worden en resultaten worden verkregen.
Echter als ik Perl gebruik komen de argumenten die perl meestuurd nooit aan op de server en geeft de server daardoor geen goede response.
Perl:
1
2
3
4
5
6
7
| use SOAP::Lite; my $WSDL = 'http://server:8081/Webservice/WebserviceService?wsdl'; my $soap = SOAP::Lite->service($WSDL); my $result = $soap->hello("world"); print $result . "\n"; $result = $soap->hellowithoutparameters; print $result . "\n"; |
Dit zou twee regels moeten genereren waarbij bij de eerste regel "world" terug komt, en bij de tweede een regel die aanduid dat hellowithoutparameters methode is aangeroepen. Echter komt alleen de tweede regel terug.
In de server log is dan ook alleen te zien dat de methodes aangeroepen worden met 'null' argumenten.
Ook dit helpt niet.
Perl:
1
2
| my $string = SOAP::Data->type(string => 'world'); my $result = $soap->hello($string); |
De soap request die perl genereerd is als volgt.
XML:
1
2
3
4
5
6
7
8
9
10
| <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://Webservices/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <tns:hello> <c-gensym3 xsi:type="xsd:string"> world </c-gensym3> </tns:hello> </soap:Body> </soap:Envelope> |
Wat Glassfish als voorbeeld aangeeft ziet er echter zo uit.
XML:
1
2
3
4
5
6
7
8
9
| <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header/> <S:Body> <ns2:hello xmlns:ns2="http://Webservices/"> <name>world</name> </ns2:hello> </S:Body> </S:Envelope> |
De python code die wel werkt is als volgt:
Python:
1
2
3
4
5
| import suds url = 'http://server:8081/Webservice/WebserviceService?wsdl' self.client = suds.client.Client(url) result = self.client.service.hello('world') print result |
Ik heb meerdere dingen geprobeerd maar ik kom er niet uit. Kunnen jullie helpen?