1、引用ksoap2类库,在调用的代码文件中引用命名空间
-
import org.ksoap2.SoapEnvelope;
-
import org.ksoap2.SoapFault;
-
import org.ksoap2.serialization.SoapObject;
-
import org.ksoap2.serialization.SoapSerializationEnvelope;
-
import org.ksoap2.transport.HttpTransportSE;
代码:
android调用webservices工具类
/*
* webservices工具类
* */
public class WSUtils {
public WSUtils() {
}
/**
* @param nameSpace ws的命名空间
* @param methodName 方法名称
* @param params 方法参数
* @param wsdl ws的url地址
* @return SoapObject 返回的数据
*/
public static SoapObject callWS(String nameSpace, String methodName,
Map params, String wsdl) {
final String SOAP_ACTION=nameSpace+methodName;
SoapObject request = new SoapObject(nameSpace, methodName);
SoapObject soapResult=null;
if(params !=null && !params.isEmpty()){
for(Iterator it=params.entrySet().iterator();it.hasNext();){
//遍历MAP
Map.Entry<String, Object> e=(Map.Entry<String, Object>) it.next();
request.addProperty(e.getKey().toString(),e.getValue());
}
}
/**
* 设置Soap版本
* 类型:VER1.0,VER1.1,VER1.2
*/
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// SOAP 1.1
envelope.dotNet=true;//是否是dotNet WebService
envelope.bodyOut = request;
//HttpTransportSE ht = new HttpTransportSE(wsdl);
AndroidHttpTransport androidHT=new AndroidHttpTransport(wsdl);
try {
// ht.call(SOAP_ACTION, envelope);
androidHT.call(SOAP_ACTION,envelope);
} catch (IOException e) {
Log.e("IOException:", e.getMessage());
} catch (XmlPullParserException e1) {
Log.e("XmlPullParserException", e1.getMessage());
}
try {
soapResult=(SoapObject)envelope.getResponse();
} catch (SoapFault e) {
Log.e("SoapFault",e.getMessage());
}
return soapResult;
}
}
//调用webservices
2、在AndroidManifest.xml中加入网络访问权限,<uses-permission android:name="android.permission.INTERNET"></uses-permission>