HttpURLConnection相关的小记

在Android上进行网络通信,Android本身提供的手段是HttpClient和HttpURLConnection两种。其中HttpClient来自于Apache,拥有大量灵活的API。但出于一些原因Google自己开发了HttpURLConnection,并且建议从Froyo(Android 2.2,API level 8)开始使用HttpURLConnection。(相关博文, 需备梯子。)

如果这两个满足不了需求,可以考虑使用AsyncHttpClient和Volley。

既然官方这么建议,我也就乖乖地使用HttpURLConnection了。

基础

对HTTP协议有一定了解的前提下,使用HttpURLConnection并没有什么难点,基本看个代码也就明白得差不多了。

你可以参考这里HttpURLConnection的文档来学习更多的内容。

Request参数

在进行网络请求时,尤其是在使用POST方法时,请求的参数相当重要。但HttpURLConnection中并没有直接设置参数的方法。

为此我查阅了下SO,可以参考这个回答来进行带有参数的POST请求。

至于GET方法,直接在url后跟上相应的参数即可。

为了方便起见,我将回答中的 getQuery()方法改造了一下,使得可以根据请求方式来生成参数字符串。

转换InputStream为String

返回Response后,时常会需要将Response中的内容转换成String。

似乎会经常使用到,所以我查找了下合适的方法后,将其写成了个可复用的方法,为自己省点心。


最后提醒:不要在主线程中进行网络通信。