您的位置:首页 > 移动开发 > Android开发

Android手机客户端访问.NET服务器端的方法(1)

2012-04-16 12:17 841 查看
在网上看到一篇关于android访问.NET 服务器的方法,感觉比我以前写的那个代码规范一点,所以保存下来,下面是原文:http://express.ruanko.com/ruanko-express_31/tech-overnight2.html

  我们知道webservice是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台、不同语言、不同技术整合到一起。在本文中我们设定的场景就是通过android手机客户端访问基于.NET技术实现的server服务器端,实现两者之间的通信,我们知道android是使用JAVA语言进行开发,所以在实现细节上与常见的android手机客户端访问java语言开发的server端还是有所不同的。

在Android SDK中并没有提供调用webservice的库,因此需要使用第三方SDK来调用webservice。

PC版本的webservcie客户端库非常丰富,例如axis2,cxf等,但这些开发包对于android系统故偶庞大,也未必很容易移植到android系统中,适合手机的webservice客户端的SDK也有一些,一般我们用的是KSOAP2。

首先我们可以去http://code.google.com/p/ksoap2-android/downloads/list进行下载,将下载后代jar文件复制到Eclipse工程的lib目录中。并在Eclipse工程中引用这个jar包。

下面这个例子,实现的即是手机客户端登录,发送用户名和密码至服务器端,并进行判断:

public class WebService {
private static final String NAME_SPACE = "http://COE.org/";
private static final String URL = "http://192.168.18.44/
serverInsurance/Services.asmx?wsdl";
private static SoapSerializationEnvelope envelope ;
//调用WebService提供的方法

public static String transferService(String METHOD_NAME,
Map<String,Object> map) {
String state=null;
SoapObject request = new SoapObject(NAME_SPACE, METHOD_NAME);
Iterator it = map.entrySet().iterator();

while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String key = entry.getKey().toString();
String value = entry.getValue().toString();
request.addProperty(key,value);
}

envelope= new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = request;
envelope.dotNet = true;
HttpTransportSE ht = new HttpTransportSE(URL);
try {
ht.call(NAME_SPACE + METHOD_NAME, envelope);
if (envelope.getResponse() != null) {

// .net中web service返回的数据是object类型,
不能直接转成soapObject

Object obj = envelope.getResponse();
if (obj != null) {
state= obj.toString();
} else {
state=null;
}
} else {
state=null;
}
} catch (Exception e) {
state=null;
}
return state;
}
}

String METHOD_NAME = "LoginCheckUser";
Map<String,Object> map=new HashMap<String,Object>();
map.put("userName", userName);
map.put("pwd", pwd);
String json= WebService.transferService(METHOD_NAME, map);

在这里我们必须注意的是.net中web service返回的数据是object类型,不能直接转成soapObject,这点必须特别注意,最后是需要访问网络,需要在AndroidManifest.xml加入:

<uses-permission android:name="android.permission.INTERNET" />

否则将无法进行正常的访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: