使用axis2开发客户端,如果调用的WebService同样是axis2写的,则代码如下:
WeatherWebServiceStub stub = new WeatherWebServiceStub();
WeatherWebServiceStub.GetWeatherbyCityName request = new WeatherWebServiceStub.GetWeatherbyCityName();
request.setTheCityName("上海");
WeatherWebServiceStub.GetWeatherbyCityNameResponse response = stub.getWeatherbyCityName(request);
ArrayOfString arrayOfString = response.getGetWeatherbyCityNameResult();
String[] arr = arrayOfString.getString();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
如果调用的WebService是C#写的,则会出现问题,原因在于“axis中使用的是HTTP/1.0协议,而.NET和axis2使用的是HTTP/1.1协议,后两者的区别在于.NET未使用ns1的命名空间前缀打包SOAP请求,且axis2使用了Content-Encoding: chunked头。 所以必须在axis2中设置一下。”设置代码是
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false);