Android: Erstellen und Senden einer XML-SOAP-Anfrage Programmgesteuert
Hallo und vielen Dank im Voraus. Ich fand dieses tutorial und ich versuche, ihn nachzuahmen: http://lalit3686.blogspot.com/2012/06/calling-soap-webservice-using-httppost.html. In meiner iOS app ich bin in der Lage, erstellen Sie einen string mit xml-Eigenschaften, die an eine SOAP-Anfrage, und Sie bekommen einen xml-Antwort in string-form. Ich versuche das gleiche zu tun, mit meiner android app.
Leider etwas nicht funktioniert. Ich angehängt habe den relevanten code.
StringBuilder stringBuilder = new StringBuilder ();
stringBuilder.append(String.format("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
"xmlns:csr=\"http://www.mywebsite.net/\">\n" +
"<soapenv:Header/>\n" +
"<soapenv:Body>\n" +
"<csr:www.mywebsite.net><![CDATA[\n" +
"<www.mywebsite.net>\n" +
"<Request>\n" +
"<user>%s</user>\n" +
"<password>%s</password>\n" +
"<Function>requestdata</Function>\n" +
"<FromDate>2013-01-01</FromDate>\n" +
"<ToDate>2014-01-01</ToDate>\n" +
"</Request>\n" +
"</www.mywebsite.net>\n" +
"]]></csr:www.mywebsite.net>\n" +
"</soapenv:Body>\n" +
"</soapenv:Envelope>\n", username, password));
String xml = stringBuilder.toString();
HttpPost httpPost = new HttpPost("http://www.mywebsite.net/");
StringEntity entity;
String response_string = null;
try {
entity = new StringEntity(xml, HTTP.UTF_8);
httpPost.setHeader("Content-Type","text/xml;charset=UTF-8");
httpPost.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(httpPost);
response_string = EntityUtils.toString(response.getEntity());
Log.d("request", response_string);
prefs.edit().putString("response", response_string).commit();
}
catch (Exception e) {
e.printStackTrace();
}
Edit: problem behoben. Ich war immer der Fehler:
android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099).
Den code oben funktioniert - so stellen Sie sicher, dass dieser code in der onCreate () - Methode.
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Diese ermöglicht die Nutzung der Haupt-thread für SOAP-Anfragen/- Antworten.
bekommst du irgendwelche Fehler ??
atrix - android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
InformationsquelleAutor Mike E | 2013-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
War ich immer die Fehlermeldung:
android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099).
Habe ich gegoogelt dieser Fehler und kam auf diesen link: DefaultHttpClient zu AndroidHttpClient - das schlug ich den folgenden code in der onCreate-Methode.
Jetzt seine Arbeit. In der Tat, Android lässt keine Netzwerk-Operationen durchgeführt werden, die auf den Haupt-thread nicht mehr.
InformationsquelleAutor Mike E
Dies ist, weil Sie ausführen, den Netzbetrieb auf einen UI-thread, die gegen den Strikten Modus. Verwenden AsyncTask für den hintergrund-Betrieb.
InformationsquelleAutor user2462475
http://www.youtube.com/watch?v=v9EowBVgwSo. Das video ist ein tutorial, wie man über das senden einer soap-webservice-request in android.
http://www.helloandroid.com/tutorials/using-ksoap2-android-and-parsing-output-data. Der link hier ist ein Beispiel mit Erklärung. Gehen Sie durch die links und ändern Sie Ihren code entsprechend.
Senden request in xml form. Ich hatte eine ähnliche Anforderung, und ich habe die unten-format gesendet, ein soap-reuest in xml-form. Ändern Sie den unten nach Ihren Bedürfnissen. Ich
Android, das senden von XML über HTTP POST (SOAP). Haben Sie einen Blick auf die accepeted Antwort in dem link.
Bearbeiten
http://www.ibm.com/developerworks/opensource/library/x-android/. Haben Sie einen Blick auf die überschrift Erstellen von XML.
versuchen Sie, den obigen code durch hinzufügen von Eigentum auf die Anfrage.developer.android.com/training/articles/.... Sie haben zu viele strings im code. haben Sie einen Blick auf den link unter der überschrift Vermeiden Sie Unnötige Objekte.
ist Ihre Antwort ebenfalls in xml-format. Was ist der Fehler, dass Ihr immer??
ich erwarte eine Antwort im xml-format - aber ich war in der Planung analysieren über einer Zeichenfolge als ich in meiner ios-app
so u r erste Antwort?? u müssen, um zu analysieren, ob diese Antwort jetzt??
InformationsquelleAutor Raghunandan