Web Tools Platform - Web Service Client generieren und aufrufen

  • Antworten:3
Tom
  • Forum-Beiträge: 2

22.01.2014, 16:45:45 via Website

Hi!

Ich bin neu in der Android- und Java-Entwicklung und möchte einen Webservice per Java konsumieren.
Der Webservice (SOAP) wurde mit C# / WCF programmiert und getestet.
Nun habe ich die WTP entdeckt und in Eclipse eingebunden (Eclipse -> Help -> Install new software -> http download.eclipse.org/releases/kepler/).
Im Projektverzeichnis konnte ich per New -> Others.. -> "Web Service Client" einen Client generieren lassen. Das scheint auch funktioniert zu haben.
Es wurde ein Package "org.tempuri" erstellt, in dem sich mehrere Klassen/Interfaces befinden:




Um den Fehler zu beheben, habe ich zum Java Build Path eine Library jre7 hinzugefügt.

Instanzierung des Clients und Aufruf des Service:
1public void sendRequest(View view) {
2 org.tempuri.IMobileServiceProxy client = new IMobileServiceProxy();
3 try {
4 Boolean result = client.timeIsEvenNumber();
5 } catch (RemoteException e) {
6 // TODO Auto-generated catch block
7 e.printStackTrace();
8 }
9 }

Wenn nun die Zeile org.tempuri.IMobileServiceProxy client = new IMobileServiceProxy(); ausgeführt wird erhalte ich den Fehler:



Ich bin nun ziemlich ratlos, wie dieses Problem zu beheben ist und bitte euch mir dabei zu helfen.
Schreibt mir auch bitte welche Daten ihr noch benötigt, um mögliche Fehler aufzuzeigen.

MfG Tom

— geändert am 22.01.2014, 17:03:49

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.01.2014, 20:37:32 via App

Ist die Lib mit android kompatibel?
Ich habe auch schon sowas gesucht aber für android gibts nur ksoap2 etc.
denn du musst die Lib als jar in dein Projekt einbinen und mit in die Apk packen.
Ich habe statt einem Wcf einen webserver mit api controller gewählt,dieser gibt mir die Daten per http aus und ich kann sie in Android wieder Einlesen.
Falls du es schaffst eine einfache lösung zu Finden, um soap mit android ( nicht nur java) zu benutzen, würde ich es super finden wenn du mir die lösung verätst.
@all bitte postet dazu was ihr über android und wcf/soap communication wisst.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Fabian Simon
  • Forum-Beiträge: 359

23.01.2014, 13:32:24 via Website

Hallo,
so leid mirs tut aber meines wissen hinkt java schon seit jahren hinterher was das Thema SOAP angeht.

ob du da mit SOAP glücklich wirst weiß ich nicht....

Antworten
Tom
  • Forum-Beiträge: 2

27.01.2014, 10:15:44 via Website

Ob die WTP mit Android kompatibel ist weiß ich nicht.
Hab es jetzt mit ksoap2 versucht (werde aber dann trotzdem REST verwenden).

Hier ein Beispiel wie ich es gelöst habe:
(die Methode timeIsEvenNumber ruft einen einfachen WebService auf, um zu prüfen, ob die aktuellen Minutenzahl eine gerade oder eine ungerade Zahl ist)

1private static final String METHOD_NAME = "TimeIsEvenNumber";
2 private static final String NAMESPACE = "http //tempuri.org/";
3 private static final String SOAP_ACTION = "http //tempuri.org/IMobileService/TimeIsEvenNumber";
4
5 private static final String URL = "http //127.0.0.1/mobile/MobileService.svc";
6
7 private static final int SOAP_VERSION = SoapEnvelope.VER11;
8
9 public java.lang.String timeIsEvenNumber() throws Exception {
10 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
11
12 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SOAP_VERSION);
13 envelope.dotNet = true;
14 envelope.setOutputSoapObject(request);
15
16 HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
17
18 androidHttpTransport.call(SOAP_ACTION, envelope);
19 Object result = envelope.getResponse();
20
21 return (java.lang.String) ((SoapPrimitive)envelope.getResponse()).getValue();
22}

Man beachte dass ich als neuer Benutzer hier die URLs modifizieren musste (habe den Doppelpunkt entfernt).
Die URLs und sonstige Daten für die oben genannten Variablen erhältst du aus deiner WSDL.

Kannst du was damit anfangen?

Antworten