使用HttpUrlConnection取代Apache Http Client
2016-02-20 14:53
645 查看
这里面有两种方法可做:1.添加该类库;2.使用HttpUrlConnnection进行替代。
1.在开发工具中添加该jar包
Android Studio可以在gradle文件中简单的添加
Eclipse中,将**\android-sdk\platforms\android-23\optional下org.apache.http.legacy.jar放入libs文件夹中。
评论:既然Android6.0抛弃了Apache Http Client,则能不用就不用吧。解决方式是使用HttpUrlConnection进行替代。
1.在开发工具中添加该jar包
Android Studio可以在gradle文件中简单的添加
android { useLibrary 'org.apache.http.legacy' }
Eclipse中,将**\android-sdk\platforms\android-23\optional下org.apache.http.legacy.jar放入libs文件夹中。
评论:既然Android6.0抛弃了Apache Http Client,则能不用就不用吧。解决方式是使用HttpUrlConnection进行替代。
1.使用HttpUrlConnection向服务器端发起请求
public static JSONObject doPost(String urlInString, Map<String,String> paramsMap) { //这里用于组装要传递的参数 //虽然也可以直接将参数拼接到urlInString后面,如果涉及到传递的参数中,有汉字,就会出现???问题 //如果要传递的参数中包含&这种特殊字符,就需要使用UrlEncode来进行处理了 StringBuilder stringBuilder=new StringBuilder(); if (paramsMap != null && paramsMap.size() > 0) { Iterator<Map.Entry<String, String>> iterator = paramsMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); try { String key=entry.getKey(); stringBuilder.append(key); stringBuilder.append("="); String value= URLEncoder.encode(entry.getValue(), "UTF-8"); stringBuilder.append(value); stringBuilder.append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } String paramsContent=stringBuilder.toString(); try { URL url = new URL(urlInString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod("POST"); //和服务器建立连接后,下面向服务器端传递参数 if(!TextUtils.isEmpty(paramsContent)) { DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(wr, "UTF-8")); writer.write(paramsContent); writer.close(); wr.close(); } //读取从服务器端返回的数据 InputStream inStream = conn.getInputStream(); if (conn != null && conn.getResponseCode() == 200) { byte[] buffer = new byte[1024*8]; int readedByte = -1; ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); while ((readedByte = inStream.read(buffer)) > 0) { byteStream.write(buffer, 0, readedByte); } byte[] resultInByte = byteStream.toByteArray(); String resultInString = new String(resultInByte, "UTF-8"); if (resultInString.startsWith("{")) { try { return new JSONObject(resultInString); } catch (JSONException e) { e.printStackTrace(); } } } } catch (IOException e) { e.printStackTrace(); } return null; }
2.使用HttpUrlConnections向服务器端发起请求
持续更新中敬请期待!参考内容:
http://stackoverflow.com/questions/18759199/java-utf-8-encoding-not-working-httpurlconnection相关文章推荐
- linux 下使用 tc 模拟网络延迟和丢包
- 基于linux TCP的select回射服务器
- 返回码错误总结
- 我的第一个Python3 网络爬虫 百度百科爬虫
- ORMLite 使用(网络数据存储到数据库)
- 网络编程(4)—— 基于Windows系统的socket客户端的编程步骤
- 网络编程(3)—— 基于Windows系统的socket服务器端的编程步骤
- Java NIO之TCP
- 检测网络连接具体类型:2g/3g/4g(iOS7+)
- 网络营销人员如何培养创新技能
- Xcode7、iOS9网络访问权限问题
- ubuntu14.04网络设置
- ubuntu14.04网络设置
- NanoHTTPD web server的一个简单荔枝
- 网络第一道防线:验证码的故事[安全篇]
- 《PYTHON源码剖析》的第十二章:Python虚拟机中的类机制 http://blog.sina.com.cn/s/blog_75984e830100yf3i.html
- 【BZOJ 1491】 [NOI2007]社交网络
- WinHTTP C/C++ API Reference
- [深入Python]sys.modules http://www.cnblogs.com/tuzkee/p/3540448.html
- java高性能 tcp协议代码示例(一)