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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章