如何在不使用Ksoap2的Android中调用SAP SOAP Web服务?

时间:2012-02-29 09:53:42

标签: android web-services sap

我想在不使用kso​​ap2的情况下从Android使用SAP SOAP Web服务? Android中还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以但你必须在http请求中传递soap xml,如下所示。

public class SimpleHTTPRequest {
    String envelope1="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
    "<soap:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"urn:insertdata\"" +
    " targetNamespace=\"urn:insertdata\">"+
    "<soap:Body>"+
    "<insertdata>"+
    "<name xsi:type=\"xsd:string\">ghjghj</name>"+
    "<phone xsi:type=\"xsd:string\">1111</phone>"+
    "<email xsi:type=\"xsd:string\">ascom</email>"+
    "<score xsi:type=\"xsd:string\">12</score>"+
    "</insertdata>"+
    "</soap:Body>"+
    "</soap:Envelope>";
    /**
     * @param args
     */
    public static void main(String[] args) {
         String url="http://url/iphone_soap_server.php/insertdata";
          String soapAction="http://urkl/iphone_soap_server.php/insertdata/insertdata";
    HttpURLConnection connection = null;
    OutputStreamWriter wr = null;
    BufferedReader rd  = null;
    StringBuilder sb = null;
    String line = null;
    URL serverAddress = null;
    String data = "width=50&height=100";
    try {
        serverAddress = new URL("http://url/soap-server.php?wsdl");

        connection = null;

        //Set up the initial connection
        connection = (HttpURLConnection)serverAddress.openConnection();

        connection.setRequestMethod("POST");
        connection.setDoOutput(true);

        connection.setDoOutput(true);
        OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());


        writer.write(data);
        writer.flush();




        rd  = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        sb = new StringBuilder();

        while ((line = rd.readLine()) != null)
        {
            sb.append(line + '\n');
        }

        System.out.println(sb.toString());

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (ProtocolException e1) {
        e1.printStackTrace();
    } catch (IOException e2) {
        e2.printStackTrace();
    }
    finally
    {
        //close the connection, set all objects to null
        connection.disconnect();
        rd = null;
        sb = null;
        wr = null;
        connection = null;
    }
}
}