首页 > 代码库 > Java开发基础——HttpClients与网络请求
Java开发基础——HttpClients与网络请求
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与网络请求
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。