在android中调用soap请求时出错?

时间:2014-03-21 05:03:27

标签: android soap android-ksoap2

我在我的android应用程序中使用Ksoap2 android程序集。我尝试使用soap调用Web服务。但是我在transport.call上遇到错误(soapAction,envelop);这一行。
LOGCaT:

org.xmlpull.v1.XmlPullParserException: expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}soap:Fault>@1:301 in java.io.InputStreamReader@41743310)  

我的代码是:

            String url = "http://192.168.56.1:8080/CxfWebservice/webservices/Calculator";
//      String namespace = "http://localhost:8080/wsdl";
        String namespace = "http://192.160.59.1:8080/wsdl";
        String methodname = "sum";




            public static void SoapOperation(String url, String method_name,
            String name_space) throws Exception {
        String soapAction = name_space + method_name;
        SoapObject request = new SoapObject(name_space, method_name);

        PropertyInfo p = new PropertyInfo();
        p.setName("arg0");
        p.setValue(5);
        p.setType(Integer.TYPE);


        PropertyInfo p1 = new PropertyInfo();
        p1.setName("arg1");
        p1.setValue(15);
        p1.setType(Integer.TYPE);

        request.addProperty(p );
        request.addProperty(p1);

        SoapSerializationEnvelope envelop = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelop.setOutputSoapObject(request);
        envelop.dotNet = true;

        HttpTransportSE transport = new HttpTransportSE(url);
        transport.debug = true;
        transport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        transport.call(soapAction, envelop);

        String xml = transport.responseDump;

        System.out.println("the response xml is:"+xml);




    }

上面是我的代码,请给我一个解决方案。

1 个答案:

答案 0 :(得分:1)

这是一个例子。使用此代码

 public void InteractWithWebService() {

            try {
                final String URL = con.getResources().getString(R.string.URL);
                final String NameSpace = con.getResources().getString(
                        R.string.NAMESPACE);
                final String MethodName = "sum";
                final String SOAP_ACTION = con.getResources().getString(
                        R.string.SOAP_ACTION)
                        + MethodName;


                SoapObject Request = new SoapObject(NameSpace, MethodName);
                Request.addProperty("param_name", Object_name.getText().toString()
                        .trim());
                Request.addProperty("param_name", Object_name.getText().toString()
                        .trim());
                SoapSerializationEnvelope soapEnvelop;
                soapEnvelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                soapEnvelop.dotNet = true;
                soapEnvelop.setOutputSoapObject(Request);

                HttpTransportSE htp = new HttpTransportSE(URL);
                htp.call(SOAP_ACTION, soapEnvelop);
                // SoapObject response;
                SoapPrimitive resultString = (SoapPrimitive) soapEnvelop
                        .getResponse();

                if (resultString != null) {
                    status = Integer.parseInt(resultString.toString());
                }

            } catch (Exception ex) {
                status = -1;
            }
        }

在字符串文件中添加这些行

 <string name="NAMESPACE">http://tempuri.org/</string>   
    <string name="URL">http://Your_Localhost_address/Name_of_Service.svc</string>
    <string name="SOAP_ACTION">http://tempuri.org/IName_of_Service/</string>