从头学android_HttpClient

原创 2016年05月31日 15:14:14

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。




版权声明:本文为Mr.Seng原创文章,转载注明地址:http://blog.csdn.net/mr_seng

相关文章推荐

8、从头学Android之EditText控件

类结构图: 说明:EditText是一种可编辑输入的控件,,由类结构图可以看到它是TextView的子类。所以它有TextView的一些属性,下面就是一个EditText的样例 实战演练:...

27、从头学Android之多媒体--使用VideoView播放视频

VideoView 常用方法: 方法名称 描述 public void setVideoPath (String path) 加载pa...

13、从头学Android之RelativeLayout相对布局

相对布局对于做Web开发来说再熟悉不过了,我们在用CSS+DIV的时候经常会用到这些类似的相对布局的,在设置某个DIV的位置的时候,我们时常会以一个DIV作为参考来设置的位置,废话不多说,直接看属性看...

从头学android_alertDialog的使用

在android中,alertDialog 用于弹出对话框,可以作为提示信息展现给用户,也可以使用户在对话框中输入信息等。 我们可以使用基本的对话框,也可以对其布局和功能自定义,即使用自定义的对话框。...

6、从头学Android之ContexMenu上下文菜单

什么是上下文菜单: 有时候我们也可以叫做快键菜单。例如我们在电脑桌面右键所看到的菜单就是快捷菜单,也叫上下文菜单,叫上下文菜单是因为Context翻译成为上下文的意思 创建上下文ContextMe...

17、从头学Android之Service初步二

在上一篇,我们学习了通过startService来启动Service,由于篇幅过长,所以这一篇是接上一篇的 二、bindService方法启动Service 先看bindSerivce(Inten...

23、从头学Android之ContentProvider

应用场景: 在Android官方指出的Android的数据存储方式总共有五种,分别是:Shared Preferences、网络存储、文件存储、外储存储、SQLite。但是我们知道一般这些存储都只是...

14、从头学Android之机器人的意图之Intent的CompentName

类层次结构图:   什么是Intent? Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。可以理解为它是一个信使。当然,也可以将Intent视为一个在不同组件之...

10、从头学Android之RadioButton和CheckBox

RadioButton   类结构图:   RadioButton很好理解就是我们做Web开发里的单选按钮,需要注意的是我们在做Web开发需要将单选按钮的名字设置成一样,在这里Android开...

27、从头学Android之多媒体--使用VideoView播放视频

VideoView 常用方法: 方法名称 描述 public void setVideoPath (String path) 加载pa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)