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

在网上看到一篇关于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" />

否则将无法进行正常的访问。

原文地址:https://www.cnblogs.com/wuyihong/p/2451521.html