在网上查了不少android调用webservice的例子,都或多或少有点小问题,问题虽小,麻烦不小,尝试了很久,才走通流程~~
里面注释的地方要尤其注意~
String NAMESPACE = "http://WebXml.com.cn/";
String METHOD_NAME = "getWeatherbyCityName";
String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
SoapObject rpc=new SoapObject(NAMESPACE, METHOD_NAME);
//下面的参数名不是顺便写的必须和webservice提供的名称一致 而且方法不是addAttribute
rpc.addProperty("theCityName", "南京");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut=rpc;
envelope.dotNet = true;
envelope.setOutputSoapObject(rpc);
HttpTransportSE ht = new HttpTransportSE(URL);
try {
String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
//SOAP_ACTION是必要的,不可为null
ht.call(SOAP_ACTION, envelope);
if(envelope.getResponse()!=null)
{
SoapObject soapObject=(SoapObject)envelope.getResponse();
//下面是解析返回字符串的方法
String info = "气温:"+ soapObject.getProperty(5).toString();
Toast.makeText(getApplicationContext(), info, Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
// TODO Auto-generated catch block
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
}
这里是工具类:ksoap2