笔记76--网络篇1:HttpURLConnection和HttpClient

来源:互联网 发布:环氧丙烷价格30日数据 编辑:程序博客网 时间:2024/06/14 00:50

部分转自张兴业博客:http://blog.csdn.net/xyz_lmn/article/details/12200133

一、Apache HTTP Client

DefaultHttpClient以及其相关类AndroidHttpClient适用于web browsers,拥有大量稳定的APIs。但是,在不破坏其兼容性的前提下很难对如此多的APIs做修改。因此,Android团队对修改优化Apache HTTP Client表现的并不积极。

二、HttpURLConnection

HttpURLConnection是一个通用的、适合大多数应用的轻量级组件。这个类起步比较晚,很容易在API上做稳定的修改。

在2.3中,HttpURLConnection的报文头中添加了对报文的压缩处理,包括请求报文和回复报文。具体参考张兴业博客。

三、用哪个

在2.0和2.2上Apache HTTP Client拥有更少的bug,更好的稳定性,因此它是最好的选择。

在2.3以后的版本中,HttpURLConnection是最好的选择,它简单的api及轻量级非常适合Android。压缩和缓存机制降低了网络使用,提高了速度、节省了电量。

四、一个HttpURLConnection案例

public static String URLConn(String strURL, String jsonData){<pre name="code" class="java">/* * 此方法必须另开线程 * 返回值为空则调用失败 * strURL:地址到?结束 * jsonData:将json对象转换成字符串 */public static String URLConn(String strURL, String jsonData){String result=null;try {strURL+="j="+jsonData;System.out.println("--strURL------"+strURL);URL url = new URL(strURL);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");  conn.setDoOutput(true);  BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));  StringBuffer buffer = new StringBuffer();String line = "";  while ((line = in.readLine()) != null){  buffer.append(line);  }  result = buffer.toString();conn.disconnect();System.out.println("////////////////////////////打印数据");System.out.println(result);} catch (Exception e) {e.printStackTrace();return "网络异常";}return result;}

注意:jsonData中的中文必须编码。编码方式:

jsonData.put("xxx",URLEncoder.encode("xxx", "UTF-8"));



0 0