码迷,mamicode.com
首页 > 编程语言 > 详细

Java开发基础——HttpClients与网络请求

时间:2017-04-03 18:21:22      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:sci   lsm   ext   ucs   spm   mft   lua   isa   tap   

      Java开发中,经常会需要访问网络资源,一般都是使用http协议去进行访问。进行网络访问最简单的方式就是使用apache提供的HttpClients包。在该篇博客中,我会来实现使用HttpClients来进行GET请求和POST请求。

下面是使用GET请求访问"http://www.baidu.com"网站:

public void get() {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            // 创建httpget.
            HttpGet httpget = new HttpGet("http://www.baidu.com");
            System.out.println("executing request " + httpget.getURI());
            // 执行get请求.
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                // 获取响应实体
                HttpEntity entity = response.getEntity();
                // 打印响应状态
                System.out.println(response.getStatusLine());
                if (entity != null) {
                    // 打印响应内容
                    System.out.println("返回内容: " + EntityUtils.toString(entity));
                }
            } finally {
                response.close();
            }
        } catch (java.io.IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

这里不对返回的数据进行处理,如果返回的是JSON,则需要解析。如果是HTML,则需要前端页面显示。执行以上代码后,返回的结果如下图所示,表示请求成功:

技术分享


下面的代码同样是对同一个url进行POST请求:

    public void post() {
        // 创建默认的httpClient实例.
        CloseableHttpClient httpclient = HttpClients.createDefault();
        // 创建httppost,也可以把参数放入url中
        HttpPost httppost = new HttpPost("http://www.baidu.com");
        // 创建参数队列,以键值对的形式存储
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
        formparams.add(new BasicNameValuePair("phone", "1"));
        UrlEncodedFormEntity uefEntity;
        try {
            uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");

            //POST请求可以通过以下的方式把参数放到body中
            httppost.setEntity(uefEntity);
            System.out.println("executing request " + httppost.getURI());
            CloseableHttpResponse response = httpclient.execute(httppost);
            try {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

POST请求与GET请求很大的一个不同是把请求参数放入body中,而不是直接放到url中。请求返回的结果如下图所示:

技术分享


       在熟练使用HttpClients后,如果其他系统也提供有RESTful的接口,则我们可以非常方便的调用了。


Java开发基础——HttpClients与网络请求

标签:sci   lsm   ext   ucs   spm   mft   lua   isa   tap   

原文地址:http://blog.csdn.net/chenyufeng1991/article/details/68961144

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!