[perl] SOAP / WSDL / GlassFish

Pagina: 1
Acties:
  • 654 views

Acties:
  • +1 Henk 'm!

  • Chewy
  • Registratie: April 2004
  • Laatst online: 26-07-2022
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.

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?

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Laatst online: 20:03
Mmmm als het wel al goed werkt in Java, waarom niet alles in Java maken?
Als je het wel via SOAP zou willen laten werken, moet je ws iets vinden waardoor je SOAP messages wat kunt laten strippen.

Acties:
  • +1 Henk 'm!

  • Shebang
  • Registratie: Mei 2006
  • Laatst online: 28-08 22:22
Ik zie dat je SOAP::Lite gebruikt icm. een WSDL file. SOAP::Lite heeft zelf een slechte ondersteuning voor WSDL files, heb je al gekeken naar SOAP::WSDL of een andere bibliotheek?

Acties:
  • 0 Henk 'm!

  • Red devil
  • Registratie: December 1999
  • Laatst online: 20:03
Is het al gelukt?

Acties:
  • 0 Henk 'm!

  • PeterBezemer
  • Registratie: Juli 2009
  • Laatst online: 20-08 08:52
Shebang schreef op vrijdag 18 december 2009 @ 14:24:
Ik zie dat je SOAP::Lite gebruikt icm. een WSDL file. SOAP::Lite heeft zelf een slechte ondersteuning voor WSDL files, heb je al gekeken naar SOAP::WSDL of een andere bibliotheek?
Als je op metacpan kijkt bij soap::wsdl staat er dit:

"This module is not recommended for new application development. Please use XML::Compile::SOAP or SOAP::Lite instead if possible.
This module has a large number of known bugs and is not being actively developed. This 3.0 release is intended to update the module to pass tests on newer Perls. This is a service to existing applications already dependent on this module."

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik denk dat TS tien jaar later niet echt nog een antwoord verwachtte 8)7

[ Voor 50% gewijzigd door RobIII op 20-09-2019 11:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.