- Android使用ksoap2调用webservice:
参考文章:https://blog.csdn.net/swjtugiser/article/details/76840353
但是此文章是直接获取天气信息,没有涉及参数问题,所以需要再思考一下如何上传参数问题;
(补):添加参数代码:
SoapObject request=new SoapObject(NAMESPACE_1,METHOD_NAME_1); request.addProperty("arg0","110");//此处就是添加需要的参数,前面是参数名,后面是自己提交上去的实参 request.addProperty("arg1","123"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request);
需要注意的是,在文中对返回的参数进行处理时需要具体接口具体分析,
比如文中的代码是
try{ HttpTransportSE transportSE=new HttpTransportSE(URL); transportSE.call(SOAP_ACTION,envelope); SoapObject result=(SoapObject)envelope.bodyIn; //获取到返回的结果,并强制转换成SoapObject对象 System.out.println("打印result:"+result); SoapObject test = (SoapObject)result.getProperty(0); //该对象中还嵌套了一个SoapObject对象,需要使用getProperty(0)把这个对象提取出来 return test; }catch (Exception e){ e.printStackTrace(); }
打印的结果显示需要使用这一行代码
SoapObject test = (SoapObject)result.getProperty(0); //该对象中还嵌套了一个SoapObject对象,需要使用getProperty(0)把这个对象提取出来
但是如果你的接口并不是像此接口的返回类型一样的话就不需要如此,
如果你返回的类型只是String字符串,那么你连envelope.bodyIn的类型都不需要强制转换,返回类型也需要改成String,特此注意,否则则会报错,由于参考文章作者使用了try catch,所以会直接显示是空指针异常,因为返回的值是null,本人就是发生了此类错误,特此告知。
- 在使用的过程中,同时发现,本人之前设置的webservice没有设置soapsaction,使用上少一个参数,不知道有没有产生影响;
添加soapaction的参数的文章如下:https://www.cnblogs.com/Gyoung/p/5469536.html
即添加代码:
svrFactory.getServiceFactory().getConfigurations().add(new MethodNameSoapActionServiceConfiguration());