这是在项目中遇到的,公司的后台是用C# .net写的,在Android设备中调用后台接口。
这里我们需要引用一个第三方的jar包,ksoap2,大家可以百度一下,然后把它添加到我们的Android工程中。
需要注意的地方:
- 权限一定要开,需要访问网络
- 访问网络需要在非主线程中访问
然后就是接下来的代码:
//访问空间,由于当时是本地测试,默认都是"http://tempuri.org/"
String nameSpace = "http://tempuri.org/";
//访问方法名称
String methodName ="Login";
final String URL = "http://192.168.0.123/AppService/Service.asmx";
final String soapAction = "http://tempuri.org/Login";
final SoapObject soapObject = new SoapObject(nameSpace,methodName);
//此处的参数,是要访问接口时需要传入的参数,键值对形式
soapObject.addProperty("userName","admin");
soapObject.addProperty("password","");
// 这里的版本"SoapEnvelope.VER10",可以在11,12,之间测试,看自己需要哪个
final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.bodyOut = soapObject;
// 后台用.net写,这个一定要有
envelope.dotNet = true;
envelope.setOutputSoapObject(soapObject);
final HttpTransportSE transport = new HttpTransportSE(URL);
new Thread(new Runnable() {
@Override
public void run() {
try {
//这里调用Call方法访问网络,在子线程中进行
transport.call(soapAction, envelope);
// 获取响应,此处ksoap已经把返回结果以对象的形式给我们,直接调用即可
final SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
System.out.println("*********************");
System.out.println(result.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
网友评论