Android中调用Web Services有很多方法,我们现在使用的是ksoap,它是SOAP web services的客户端包,ksoap现在版本为2.0.它的一个主要优点就是对dotNET兼容性比较不错。
首先下载ksoap的包文件(下载地址),在Eclispe的Package Explorer中右键项目,Build Path>Add Libraries,找到ksoap2-android-assembly-2.4-jar-with-dependencies.jar添加该引用。代码如下:
public
class
WSHelper {
final
static
String WSUrl=
"http://xxx/WSUrl.asmx"
;
private
static
String namespace =
"http://tempuri.org/"
;
/*************************************
* 获取web services内容
* @param url
* @param params
* @return
*************************************/
public
static
String GetResponse(String method,List<BasicNameValuePair> params){
try
{
String url = WSUrl;
SoapObject request =
new
SoapObject(namespace, method);
for
(
int
i=
0
,len=params.size();i<len;i++){
request.addProperty(params.get(i).getName(), params.get(i).getValue());
}
SoapSerializationEnvelope envelope =
new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet =
true
;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport =
new
AndroidHttpTransport(url);
androidHttpTransport.call(namespace + method, envelope);
SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
return
result.toString();
}
catch
(Exception e) {
return
"Error:calling the web services error"
;
}
}
}
调用时代码如下:
String method =
"MethodName"
;
//方法名称
List<BasicNameValuePair> params =
new
ArrayList<BasicNameValuePair>();
params.add(
new
BasicNameValuePair(
"userId"
, String.valueOf(
1995
)));
return
WSHelper.GetResponse(method,params);