• 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" />
    

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

  • 相关阅读:
    Java 线程池
    eclipse 创建Java web项目 Cannot change version of project facet Dynamic web module to xxx
    Maven maven-compiler-plugin 编译问题
    设计模式 单例模式
    Spring 配置文件注入
    Java HashMap、HashTable与ConCurrentHashMap
    Java Web ActiveMQ与WebService的异同
    Java Web 拦截器和过滤器的区别
    html2canvas 使用指南
    js动态改变setInterval的时间间隔
  • 原文地址:https://www.cnblogs.com/wuyihong/p/2451521.html
Copyright © 2020-2023  润新知