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

Android-异步HttpClient框架

  • 2015年08月17日 20:11
  • 3.85MB
  • 下载

Android-Httpclient_Get_Post

  • 2015年03月16日 15:57
  • 535KB
  • 下载

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

MediaPlayer类 静态构造方法 方法名称 描述 public static MediaPlayer create(Context conte...

HttpClient for android 4 3 5 jar

  • 2015年04月21日 12:57
  • 977KB
  • 下载

从头学android_双击事件(多击事件)的算法

双击事件的算法android 中提供了click事件,但是没有提供doubleClick事件,如需要使用,需要程序员自定义doubleClick方法。 其实这也不算太难,双击不过就是在很短时间内的多...
  • Mr_Seng
  • Mr_Seng
  • 2016年08月02日 12:05
  • 1572

28、从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频

应用场景: 使用VideoView播放视频简单、方便,但除此之外,我们还可以利用MediaPlayer用来播放视频。但是我们知道MediaPlayer主要用于播放音频,它是没有提供输出图像的输出界面...

android httpclient demo

  • 2013年10月30日 11:14
  • 574KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从头学android_HttpClient
举报原因:
原因补充:

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