Webservice durch Java ansprechen

erazor2106

Bekanntes Mitglied
Hallo Leute,

ich habe schon hier im Forum geschaut und auch bei Google aber noch nichts passendes (für meinen Wissensstand 😀 ) gefunden.

Ich möchte nur ein ganz einfach gestricktes Java programm schreiben, welches einen Webservice anspricht. Zur Verfügung steht mir die URL der WSDL-Datei.

http:// ... /testservice?wsdl

Dort gibt es t.b. eine getData Funktion welche ich gern ansprechen würde. Ich habe es aber bisher mit den Anleitung nicht hinbekommen und bin auch noch Anfänger auf diesem Gebiet.

Könnte mir hier vllt. jemand erklären wie der aufbau strukturiert sein muss?

VIelen Dank und viele Grüße erazor2106
 
Java Klassen generieren, Methode aufrufen und gut 🙂
Alles beschrieben hier

Das wsimport kann dir eine gute Entwicklungsumgebung abnehmen 😛
 
Danke für die Antwort. Es läuft jetzt so einigermaßen. Aber ich hätte mal noch ne grundlegende Frage. Undzwar zum direkten Aufruf des Services:

in der wsdl-Datei steht:

Java:
<xs:element name="FunktionA">
    <xs:complexType>
         <xs:sequence>
                     <xs:element name="Location" type="PointX">
                     <xs:element name="Name" type="NewString">
         </xs:sequence>
    </xs:complexType>
</xs:element>

als Aufruf starte ich dann:

Java:
import org.apache.axis.client.call;

PointX Location = new PointX(44.4434, 664.3344);
NewString Name = new NewString("Test");

Object result = call.invoke( new Object[] { Location, Name } );

Ist das soweit ok?
Mir ist noch nicht ganz klar wie ich die xml-struktur aus der wsdl-Datei genau verwenden kann
 
Dir sollte ein kompletter Client-Stub generiert werden.

Das bedeutet du kannst auch typsicher deinen Server um die generierten Klassen ansprechen. Warum machst du das nicht so?
 
Ein Stub bzw. Client Stub ist ein Begriff der Code bezeichnet der ein Interface welches z.B. durch eine WSDL beschrieben wird abbildet und sich um Netzwerkzugriff und korrekte Datenabbildung kümmert. Siehe auch Wikipedia.

In dem verlinkten Ausschnitt von der Java-Insel wird ja auch im Listing 19.8 eine generierte Klasse beim Client ausgeführt die gleich aussieht wie die Klasse am Server. Nur dass dabei statt lokalen Berechnungen die Anfrage für den Server verpackt wird, über's Netzwerk an diesen gesendet wird, dort berechnet wird und dann diesen Weg zurück nimmt.

Warum machst du's nicht genauso und verwendest solche generierte Klassen?
 
oh mist, das was im obigen Link steht hatte ich irgendwie falsch interpretiert. wenn ich das jetzt richtig sehe werden aus den Funktionen welche in der WSDL-Datei beschrieben sind, Java-klassen generiert auf die ich dann zugreifen kann!?

werde ich morgen gleich mal ausprobieren. schon mal vielen dank an euch beide
 
Verwendest du Eclipse?
Falls ja: File -> New -> Web Services -> Web Service Client

Geht sicherlich in jeder anderen IDE auch. Oder du nimmst einfach eines der vielen Tools um aus WSDL Stubs zu generieren.
 

Zurück
Oben