plusone

6. August 2011

Android WebService Client - Part 2b

Und da bin ich wieder,

den leichten Weg mit JavaClient kenn ihr nun.
Jetzt ist Android dran.
Wir bauen unseren Client auf den JavaWebService an, und hier sei gesagt, dass an sich auch ein WebService basierend auf PHP auch gehen sollte (nicht ausprobiert).

Für dieses Vorhaben brauchen wir noch die passende Library.
Ich habe es mit einer inzwischen deprecated umgesetzt.
HIER zu finden. Diese kopiert ihr bei euch ins Projekt und bindet dann ein.
(Rechtsklick im"Package Explorer" von Eclipse auf die Jar-Datei -> Build Path -> Add to Build Path)


Kommen wir zum Code,
als erstes brauchen wir die Zielpunkte:
  • Methodennamen
  • Namespace (package vom WebService)
  • SOAP-Action (besteht aus Namespace und Methodennamen)
  • URL (wo euer WebService erreichbar ist - "localhost" mit eurer IP ersetzten)
final private String METHOD_NAME = "getFriends";
final private String NAMESPACE = "http://webservice.alexroid.de/";
final private String SOAP_ACTION = "\""+NAMESPACE + METHOD_NAME+"\"";
final private String URL = "http://localhost:8080/friends/";

/ *
  * Diese Daten könnt ihr eurer WSDL-Datei entnehmen,
  * zu finden unter

  * http://localhost:8080/friends?wsdl
  * / 




Request:
 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
// Methode erwartet ein Parameter (1 = dummy)
request.addProperty("arg0", 1);

Envelope:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);

Envelope das Request setzten:
envelope.setOutputSoapObject(request);

WebService ansprechen:
AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
SoapObject result = null;

try {

    httpTransport.call(SOAP_ACTION, envelope);
    result = (SoapObject) envelope.getResponse();

} catch (SoapFault e) {

    Log.e("error", "", e);

} catch (IOException e) {

    Log.e("error", "", e);

} catch (XmlPullParserException e) {

    Log.e("error", "", e);
}

Am Ende ist das SoapObject result mit dem Response gefüllt.
Damit habt ihr eine erfolgreiche Verbindung aufgebaut und Daten ausgetauscht!

Mein Response sieht so aus:

Log.d("test", result.toString());
//führt zur Ausgabe:
//anyType{item=anyType{ID=001; Name=Lex; }; }

Wie ihr seht, beinhaltet die Ausgabe den Variablennamen und dazugehörigem Wert.
  1. Ab nun steht euch die Möglichkeit von Stringverarbeitung.
  2. Die zweite Möglichkeit ist es, wenn ihr euch Property und PropertyInfo zum Eigen macht.
gl & hf ;)

Die Kommunikation steht und Daten fließen, was will man mehr?
ja, ja.. performance..
Das teste ich als nächstes :)

regards


HIER findet ihr Part 1 - JavaWebService
HIER findet ihr Part 2a - Java WebService Clien
HIER findetihr Part 3 - StringArray als Parameter

Keine Kommentare:

Kommentar veröffentlichen