Android调用Axis、Axis2、Cxf发布的web service

在Android中调用axis2发布web service过程中一直报http500错误,axis2 web service是用eclipse插件生成的,发现直接打包成war包或直接在eclipse运行,Android调用的时候会报错,一定要打包成aar包。如果不用eclipse生成,而是手动添加则可以打包成war包使用(参考博文:使用axis2构建webservice),至于为什么还没有在网上找到答案,并且调用的url还不一样。

下面时Android调用web service的代码:

//调用axis开发的web service
private String callAxisWebService(String name) {
        String result = "";
        String namespace = "http://service.axisdemo.demo.com";
        String url = "http://192.168.1.8:8080/axisdemo/services/HelloService?wsdl";
        String methodName = "sayHello";
        SoapObject soapObject = new SoapObject(namespace, methodName);
        soapObject.addProperty("name", name);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = soapObject;
        HttpTransportSE ht = new HttpTransportSE(url);
        ht.debug = true;
        try {
            ht.call(null, envelope, null);
            SoapObject s1 = (SoapObject) envelope.bodyIn;
            result = s1.getProperty("sayHelloReturn").toString();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage());
        }
        return result;
    }

    //调用eclipse插件生成的axis2 web service
    private String callAxis2WebService(String name) {
        String result = "";
        String namespace = "http://service.axis2demo.demo.com";
        //这里的url后面没有?wsdl
        String url = "http://192.168.1.8:8080/axis2/services/helloService";
        String methodName = "sayHello";
        SoapObject soapObject = new SoapObject(namespace, methodName);
        soapObject.addProperty("name", name);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = soapObject;
        HttpTransportSE ht = new HttpTransportSE(url);
        ht.debug = true;
        try {
            ht.call(null, envelope);
            SoapObject s1 = (SoapObject) envelope.bodyIn;
            result = s1.getProperty("return").toString();
        } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage());
        }
        return result;
    }

    //调用手动配置的axis2 web service
    private String callAxis2WebService2(String name) {
        String result = "";
        String namespace = "http://service.axis2demo2.demo.com";
         //这里的url后面有?wsdl
        String url = "http://192.168.1.8:8080/axis2demo2/services/HelloService?wsdl";
        String methodName = "sayHello";
        SoapObject soapObject = new SoapObject(namespace, methodName);
        soapObject.addProperty("name", name);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = soapObject;
        HttpTransportSE ht = new HttpTransportSE(url);
        ht.debug = true;
        try {
            ht.call(null, envelope);
            SoapObject s1 = (SoapObject) envelope.bodyIn;
            result = s1.getProperty("return").toString();
        } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage());
        }
        return result;
    }

    //调用cxf开发的web service
    private String callCxfWebService(String name) {
        String result = "";
        String namespace = "http://service.cxfdemo.demo.com/";
        //在开发中使用了接口,所以?wsdl后面要跟IHelloService.wsdl
        String url = "http://192.168.1.8:8080/cxfdemo/services/HelloServicePort?wsdl=IHelloService.wsdl";
        String methodName = "sayHello";
        SoapObject soapObject = new SoapObject(namespace, methodName);
        soapObject.addProperty("name", name);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = soapObject;
        //envelope.dotNet = true;
        HttpTransportSE ht = new HttpTransportSE(url);
        ht.debug = true;
        try {
            ht.call(null, envelope, null);
            SoapObject s1 = (SoapObject) envelope.bodyIn;
            result = s1.getProperty("return").toString();
        } catch (IOException e) {
            Log.e(TAG, e.getLocalizedMessage());
        } catch (XmlPullParserException e) {
            Log.e(TAG, e.getLocalizedMessage());
        } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage());
        }
        return result;
    }

猜你喜欢

转载自my.oschina.net/yuewawa/blog/1807049