HttpClient学习笔记

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">HttpClient是由Apache提供的一个完善的支持HTTP协议的编程工具包。虽然它提供了对HTTP协议的全面支持,但是开发者只可以使用http协议中的get和post两种请求方式。</span>

HttpClient的一般使用步骤如下:

1.创建一个HttpClient对象,因为HttpClient是一个接口,并且有很多方法,所以一般使用系统提供一个简单类,DefaultHttpClient

2.实例化Http方法,比如HttpPost,HttpGet。

3.设置Http参数。此处注意:因为get请求的参数是写在url中的,在传递时,是将参数封装到http协议的请求头中。而post请求的参数必须要单独写出来,并且是封装到http协议体中的(注意:无论是get还是post,在网络传输参数之前,都要对参数进行URL编码)。所以此处的设置Http参数对于post请求而言更为特殊。

HttpClient提供了NameValuePair(名/值对,也就是传说中的键值对)来封装参数。 并且还需要使用UrlEncodeFormEntity对NameValuePair来进行Url编码,之后才可以设置到请求体中。

4.使用HttpClient执行请求,即HttpClient调用execute方法。

5.处理Http响应,即处理execute方法的返回值。


HttpClient执行get请求:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpClient httpClient = new DefaultHttpClient();
                HttpGet request = new HttpGet("http://localhost:8080/userServlet?name=wangwu");
                HttpResponse response;
                InputStream in = null;
                BufferedReader br = null;
                try {
                    response = httpClient.execute(request);
                    in = response.getEntity().getContent();
                    br = new BufferedReader(new InputStreamReader(in));
                    String info;
                    while((info = br.readLine()) != null){
                        Log.i("HttpGet",info);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    try {
                        if (br != null)
                            br.close();
                        if (in != null)
                            in.close();
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }


HttpClient执行 post请求

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity2);
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost("http://localhost:8080/userServlet");
                List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
                postParameters.add(new BasicNameValuePair("name","wangyili"));
                postParameters.add(new BasicNameValuePair("address","China"));
                postParameters.add(new BasicNameValuePair("age","22"));
                InputStream in = null;
                BufferedReader br = null;
                try {
                    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
                    httpPost.setEntity(formEntity);
                    HttpResponse response = null;
                    response = httpClient.execute(httpPost);

                    in = response.getEntity().getContent();
                    br = new BufferedReader(new InputStreamReader(in));
                    String info;
                    while((info = br.readLine()) != null){
                        Log.i("HttpPost", info);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    try {
                        if (br != null)
                            br.close();
                        if (in != null)
                            in.close();
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
        }
    }).start();
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值