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.

entnehmen Sie bitte dieser Seite ibm.com/developerworks/opensource/library/x-android
bekommst du irgendwelche Fehler ??
atrix - android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)

InformationsquelleAutor Mike E | 2013-03-15

Schreibe einen Kommentar