在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;
}