【第22期】观点:IT 行业加班,到底有没有价值?

从头学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 举报

相关文章推荐

25、从头学Android之多媒体--使用SoundPool播放音频

SoundPool 构造方法 构造方法 描述</st

从头学android_ListView的使用

Android Listview的使用,设置Adapter

欢迎关注CSDN程序人生公众号

关注程序员生活,汇聚开发轶事。

26、从头学Android之多媒体--使用MediaRecorder录制音频

MediaRecoder 内部类或接口: 常用的方法 <table borde

从头学Android之SubMenu子菜单

子菜单 子菜单就是将相同功能的分组进行多级显示的一种菜单。 创建子菜单的步骤: 1、  覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSu...

5、从头学Android之SubMenu子菜单

子菜单 子菜单就是将相同功能的分组进行多级显示的一种菜单。 创建子菜单的步骤: 1、 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单 2、 调用SubMenu的add()方法,添加子菜单 3、 覆盖onContextItemSelected()方法,响应子菜单的单击事件 至于onCreateOptionsMenu()方法在前面已做过介绍
  • mmdev
  • mmdev
  • 2011-09-18 10:54
  • 391
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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