关闭

从头学android_HttpClient

标签: androidurl网络HttpClient
240人阅读 评论(0) 收藏 举报
分类:

HttpClient(已过时)

这是在android 6.0 之后被谷歌隐藏的网络连接的api,被谷歌建议使用的是HttpURLConnection。

关于HttpURLConnection的使用,可以参考我的另外一篇博客 从头学android_GET和POST请求

如果真的必须要使用这个api,谷歌也提供了在android studio中的解决方法。
附上谷歌官方原文:

/*--------------------------------------------------------*/

//官方原文

Apache HTTP Client Removal

Android 6.0 release removes support for the Apache HTTP client. If your app is using this client and targets Android 2.3 (API level 9) or higher, use the HttpURLConnection class instead. This API is more efficient because it reduces network use through transparent compression and response caching, and minimizes power consumption. To continue using the Apache HTTP APIs, you must first declare the following compile-time dependency in your build.gradle file:

 

android {

    useLibrary 'org.apache.http.legacy'

}

/*--------------------------------------------------------*/

 

原文地址:http://developer.android.com/intl/zh-cn/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client


但是一些老的程序是用这个API写的,所以对这个过时方法仍然有必要学习。


GET:

                String path = "http://172.20.12.131:8080/web001/LoginServlet?username=" + URLEncoder.encode(username) + "&password=" + password;
                //创建client对象
                HttpClient client = new DefaultHttpClient();
                //创建get请求对象
                HttpGet get = new HttpGet(path);
                try {
                    //使用client发送get请求,得到相应对象
                    HttpResponse response = client.execute(get);
                    //获取状态行,状态行包含着状态信息
                    StatusLine line = response.getStatusLine();
                    if (line.getStatusCode() ==200){//响应码是200,交互成功
                        //获取实体
                        HttpEntity entity = response.getEntity();
                        //获取内容
                        InputStream is = entity.getContent();
                        String result = getStringFromInputStream(is);

                        Message msg = new Message();
                        msg.obj = result;
                        handler.sendMessage(msg);
                    }
                }

POST:

与get不同的是,需要在httpPost中附加参数信息

                String path = "http://172.20.12.131:8080/web001/LoginServlet";
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost(path);

                List<NameValuePair> parameters = new ArrayList<>();
                NameValuePair nvp1 = new BasicNameValuePair("username",username);
                NameValuePair nvp2 = new BasicNameValuePair("password",password);
                parameters.add(nvp1);
                parameters.add(nvp2);
                HttpEntity entity = new UrlEncodedFormEntity(parameters,"utf-8");
                post.setEntity(entity);

总结

使用HttpClient显然要比HttpUrlConnection要繁琐,虽然结构更 清晰了,但几乎没有太大的封装进步,如果有更简捷的使用要求,完全可以使用一些第三方的框架实现,所以开发中应尽量遵照谷歌的规范建议,避免使用HttpClient。




0
0
查看评论

[从头学数学] 第211节 带着计算机去高考(三)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼。设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉。 正剧开始: 星历2016年05月18日 1...
  • mwsister
  • mwsister
  • 2016-05-18 15:27
  • 2815

[从头学数学] 第160节 相似

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了筑基后期的修炼, 这次要修炼的目标是[相似]。 正剧开始: 星历2016年04月04日 09:54:11, 银河系厄尔斯星球中华帝国江南行省。 [工程师阿伟]正在和[机器小伟]一起研究[相似]。 ...
  • mwsister
  • mwsister
  • 2016-04-04 10:15
  • 690

从头学习JAVA(一)

JAVA语言概述Java分为J2EE,J2ME,J2SE J2ME:主要用于控制移动设备和信息家电等有限存储设别。 J2SE:整个JAVA技术的核心和基础,它是J2ME和J2EE编程的基础。 J2EE:提供了企业应用开发的相关的完整解决方案。JDK1.2 把 API分成三大类 核心API:由...
  • u010542146
  • u010542146
  • 2016-03-31 09:06
  • 251

从头开始学习算法和数据结构

#include #define N  (10) #define SUCCESS 0 #define FAULSE  -1 typedef int Elem; /*Function  prototype*/ int InsetSort(Elem ...
  • daiyinglang
  • daiyinglang
  • 2015-08-03 23:18
  • 173

从头开始学习angular.js----001(尽量每天一篇)

angularjs实现helloworld(双向绑定)1.首先介绍一下angular是个什么东西(题主也刚看的) angularjs是一个很不错的前端框架,喜欢前端的朋友可以跟我一起做 angular通过指令 扩展了HTML,然后通过表达式绑定数据到HTML2.首先在头部标签引入angular(...
  • u014271180
  • u014271180
  • 2016-10-22 18:23
  • 537

java从头学day03-2[函数概述]

一、定义:具有特定功能的一段程序。也称f
  • zmin2012
  • zmin2012
  • 2014-06-12 08:14
  • 169

从头开始学算法

目录1.打印菱形2.递归实现阶乘计算3.递归实现回文判断    1.打印菱形分析:充分利用数学知识,坐标加函数,菱形的四条边看成4个一次函数,满足的情况打*,不满住的打空白程序:java 输入奇数import java.util.Scanner;public ...
  • abrody1983
  • abrody1983
  • 2011-06-30 23:26
  • 142

[从头学数学] 第237节 重积分

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了元婴期的修炼。 这次要修炼的是数学分析(或称高等数学、或称微积分)。 正剧开始: 星历2016年06月03日 12:46:30, 银河系厄尔斯星球中华帝国江南行省。 [工程师阿伟]正在和[机器小伟]一起研究[重积分]。
  • mwsister
  • mwsister
  • 2016-06-03 13:36
  • 1673

数学!!

数学!!! 目录 数学 目录 总览 模 模的基本性质 余 辗转相除 同余 逆元 杨辉三角 推广 卡特兰数 推广 斐波那契数列 推广 组合数 数学定理 gcd 一些数学相关的题 (本博客部分内容摘自百度百科,维基百科和大佬们的博客) 时不时积...
  • qq_35757800
  • qq_35757800
  • 2017-10-24 16:02
  • 117

[从头学数学] 第177节 三角函数

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了结丹中期的修炼, 这次要修炼的目标是[三角函数]。 正剧开始: 星历2016年04月14日 10:26:31, 银河系厄尔斯星球中华帝国江南行省。 [工程师阿伟]正在和[机器小伟]一起研究[三角函数]。 ...
  • mwsister
  • mwsister
  • 2016-04-14 13:05
  • 1037
    个人资料
    • 访问:16577次
    • 积分:605
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条