Guten Tag,
Ich versuche mit Android auf einen SOAP - Server zuzugreifen.
Mit einem PHP-Client funktioniert das Problemlos, nur wie bekomme ich das mit Java hin ?
- ksoap2.x.x.jar ist als Libary angegeben
- programm lässt sich bauen
- Androidanwendung stürtzt immer ab.
FEHLER laut LOG:
ZitatAlles anzeigen05-03 18:35:44.364: WARN/System.err(1490): org.xmlpull.v1.XmlPullParserException: unexpected type (position:TEXT Hallo ! Hier spr...@1:36 in java.io.InputStreamReader@44e96190)
05-03 18:35:44.393: WARN/System.err(1490): at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273)
05-03 18:35:44.393: WARN/System.err(1490): at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:1420)
05-03 18:35:44.393: WARN/System.err(1490): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)
05-03 18:35:44.404: WARN/System.err(1490): at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
05-03 18:35:44.404: WARN/System.err(1490): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
05-03 18:35:44.404: WARN/System.err(1490): at service.client.Home.onCreate(Home.java:39)
05-03 18:35:44.414: WARN/System.err(1490): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-03 18:35:44.414: WARN/System.err(1490): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-03 18:35:44.414: WARN/System.err(1490): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-03 18:35:44.423: WARN/System.err(1490): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-03 18:35:44.423: WARN/System.err(1490): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-03 18:35:44.423: WARN/System.err(1490): at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 18:35:44.423: WARN/System.err(1490): at android.os.Looper.loop(Looper.java:123)
Sind die Einstellungen falsch ?
server.php
<?php
function addiere($sum1, $sum2) {
return $sum1 + $sum2;
}
function hallo() {
return "Hallo ! Hier spricht der Server -_- ";
}
$server = new SoapServer(NULL, array('uri' => "http://www.wohnlandung.de/service/")); //{uri} müsst ihr ersetzen mit den pfad
$server->addFunction('addiere'); //Funktion zum Server hinzufügen
$server->addFunction('hallo');
$server->handle(); //Hier wird die Abfrage abgearbeitet
?>
Alles anzeigen
<?php
$client = new SoapClient(NULL,
array(
"location" => "http://www.wohnlandung.de/service/server.php", //{url} müsst ihr durch den Pfad ersetzen
"uri" => "urn:xmethodsTestServer",
"style" => SOAP_RPC,
"use" => SOAP_ENCODED
));
$parameters = array(new SoapParam('100', 'sum1'),new SoapParam('203', 'sum2'));
if($_GET["act"]=="")
{
$_GET["act"] = "hallo";
}
$result = $client->__call($_GET["act"],$parameters,array(
"uri" => "urn:xmethodsTestServer",
"soapaction" => "urn:xmethodsTestServer#addiere" //irgendein Platzhalter
));
echo $result;
?>
Alles anzeigen
Android Java Projekt
package service.client;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class Home extends Activity {
private static final String SOAP_ACTION = "hallo";
private static final String METHOD_NAME = "xmethodsTestServer";
private static final String NAMESPACE = "xmethodsTestServer";
private static final String URL = "http://www.wohnlandung.de/service/client.php";
private Object resultRequestSOAP = null;
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
TextView tv = new TextView(this);
setContentView(tv);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//SoapObject
request.addProperty("sum1", "20");
request.addProperty("sum2", "10");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
resultRequestSOAP = envelope.getResponse();
String[] results = (String[]) resultRequestSOAP;
tv.setText( results[0]);
Toast.makeText(getApplicationContext(), "Ereignis: " + results[0], Toast.LENGTH_LONG).show();
}
catch (Exception aE)
{
aE.printStackTrace ();;
Toast.makeText(getApplicationContext(), "Fehler ?", Toast.LENGTH_LONG).show();
}
}
}
Alles anzeigen