PvC Uebung 9

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

PvC Uebung 9
Hi!

Ich versuche gerade diesen komischen WS hinzukriegen. Ich habe bisher das so verstanden:

  • Mittels “Generate Stub” im WTK die Stubklassen erstellen
  • In Midlet importieren
  • CurrencyConvertorSoap_Stub instanziieren
  • z.B. double x = myStub.conversionRate(new Currency(“USD”), new Currency(“EUR”)); aufrufen.

Da schmeisst er mir dann aber eine MarshalException mit Message “Missing SOAP Body or Envelope”

Wenn ich mir den Response mir auf www.soapclient.com anschaue, scheint die Envelope und Body zu haben:

<?xml version="1.0" encoding="utf-8"?>
<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">
<soap:Body><ConversionRateResponse xmlns="http://www.webserviceX.NET/"> 
<ConversionRateResult>0</ConversionRateResult>
</ConversionRateResponse></soap:Body></soap:Envelope>

Warum schmeisst der mir die Exception? Oder geh ich da grundsaetzlich falsch ran?

Danke schonmal!


Moin,

ich habs auch so versucht und bekomme den gleichen Fehler.
Aber ich fürchte, der Fehler liegt in den Klassen, die der Stub-Generator ausgespuckt hat…
Eigentlich sollte man sich ja mit den generierten Klassen um nix kümmern müssen und einfach conversionRate(…) aufrufen.

Ich hab mal Ethereal mitlaufen lassen und das Problem ist anscheinend, dass der Server einen Bad Request zurückschickt, bevor der Stub das zweite Paket mit dem SOAP-Request abschickt(warum er das auch immer in zwei Teile teilt):

POST /ConversionRate HTTP/1.1
User-Agent: Profile/MIDP-1.0 Configuration/CLDC-1.0
Content-Language: en-US
Content-Type: text/xml
SOAPAction: "http://www.webserviceX.NET/ConversionRate"
User-Agent: UNTRUSTED/1.0
Content-Length: 415
Host: www.webserviceX.NET


HTTP/1.1 400 Bad Request
Content-Type: text/html
Date: Wed, 06 Jul 2005 06:37:53 GMT
Connection: close
Content-Length: 42

<h1>Bad Request (Invalid Header Name)</h1><?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
.xmlns:xsd="http://www.w3.org/2001/XMLSchema"
.xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
.xmlns:tns="http://www.webserviceX.NET/">
<soap:Body>
<tns:ConversionRate>
<tns:FromCurrency>EUR</tns:FromCurrency>
<tns:ToCurrency>USD</tns:ToCurrency>
</tns:ConversionRate>
</soap:Body>
</soap:Envelope>

Laut Ethereal schickt der Stub ein POST mit den ganzen Headern, aber bevor er den eigentlichen Request schickt, kommt schon der 400-Bad Request. Das

kommt dann vom Server und direkt danach schickt der Client dann anscheinend den SOAP-Request…wenns zu spät is.

In nem Beispiel von IBM(http://www-106.ibm.com/developerworks/wireless/library/wi-jsr/) verwenden sie das nämlich auch einfach so.

Aber wir haben ja noch 5 Stunden Zeit g


Alles klar, dann war das doch schon vom Ansatz her richtig. Ich versuche, nach der VL mal den Herrn Koeker zu erwischen, auf mail antwortet er nicht. Dann gebe ich nochmal Bescheid.

Btw. Konntest du nach dem Einbinden der Pakete fuer Aufgabe 10 die Klasse Criteria verwenden? Ich kann sie importieren, danach kennt er sie aber nicht :#:

Thnx!


Also wir werden uns das in der Uebung anschauen und wenns nicht geht dann gehts halt nicht. Dann will er nur den Code.

Und wg. Aufgabe 10: Wenn das Einbinden des Paketes nicht klappt ist auch die Aufgabe hinfaelig :smiley: