(一)Android网络通信的六种方式示例代码
有篇网文很不错:http://www.apkbus.com/android-13316-1-1.html,
在Android中几种网络编程的方式:
(1)针对TCP/IP的Socket、ServerSocket
(2)针对UDP的DatagramSocket、DatagramPackage。这里需要注意的是,考虑到Android设备通常是手持终端,IP都是随着上网进行分配的。不是固定的。因此开发也是有一点与普通互联网应用有所差异的。
(3)针对直接URL的HttpURLConnection
(4)Google集成了Apache HTTP客户端,可使用HTTP进行网络编程。针对HTTP,Google集成了Appache Http core和httpclient 4版本,因此特别注意Android不支持httpclient 3.x系列,而且目前并不支持Multipart(MIME),需要自行添加httpmime.jar
(5)使用Web Service。Android可以通过开源包如jackson去支持Xmlrpc和Jsonrpc,另外也可以用Ksoap2去实现Webservice
(6) 直接使用WebView视图组件显示网页。基于WebView 进行开发,Google已经提供了一个基于chrome-lite的Web浏览器,直接就可以进行上网浏览网页。
尽管有多种连接服务器的方式,但受制于具体的应用场景,其实选择的方法并不多,比较常用的方法是第4种,和网页开发基本相同。
(二)榜样
榜样的力量是无穷的,在此分析一下淘宝客户端的连接方式,或许猜测的并不正确。
login(this.userName, this.password, PhoneInfo.getImei(this), PhoneInfo.getImsi(this), this.checkCode, this.checkCodeId);
... new ConnectorHelper(pubKey, userName, password, imei, imsi, nextTime, checkCode, checkCodeId,token, appkey, appsecret); ...
url 中的参数: api:com.taobao.client.sys.login, t:nextTime, v:v2, username, password:RSAUtil.encrypt(password), token, checkCode, checkCodeId, appKey, topToken:(byte2hex(MD5(getBytes("gbk")))=>(appkey+appsecret+userName+nextTime), apiBaseUrl, ttid, imei, imsi, device_id, appSecret, sign