1.不带参数的get请求
/** * 不带参数的Get请求 */ public static void doGetWithoutParameter() throws Exception{ //创建一个HttpClient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); //创建一个GET对象 HttpGet httpGet = new HttpGet("http://www.baidu.com"); //执行请求 CloseableHttpResponse response = httpClient.execute(httpGet); //获取返回状态(200为成功) int statusCode = response.getStatusLine().getStatusCode(); //获取响应的结果(请求返回的结果保存在Entity中) HttpEntity entity = response.getEntity(); String content = EntityUtils.toString(entity,"UTF-8"); System.out.println(content); //关闭httpClient response.close(); httpClient.close(); }
/** * 代参数的Get请求 */ public static void doGetWithParameter() throws Exception{ //创建一个HttpClient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建URI对象,定义请求的参数 URI uri = new URIBuilder("http://www.baidu.com/s").setParameter("wd", "java").build(); //创建一个GET对象 HttpGet httpGet = new HttpGet("http://www.baidu.com"); //执行请求 CloseableHttpResponse response = httpClient.execute(httpGet); //获取返回状态(200为成功) int statusCode = response.getStatusLine().getStatusCode(); //获取响应的结果(请求返回的结果保存在Entity中) HttpEntity entity = response.getEntity(); String content = EntityUtils.toString(entity); System.out.println(content); //关闭httpClient response.close(); httpClient.close(); }
3.Post的无参数请求
自己写的服务器程序,用于提供post请求的服务
@RequestMapping(value="/httpclient/post",method=RequestMethod.POST) @ResponseBody public TaotaoResult testPost(){ return TaotaoResult.ok(); }对应的请求代码
// 创建http POST请求 HttpPost httpPost = new HttpPost("http://localhost:8082/httpclient/post");
public static void doPostWithOutParamater() throws Exception{ // 创建Httpclient对象 CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建http POST请求 HttpPost httpPost = new HttpPost("http://localhost:8082/httpclient/post"); CloseableHttpResponse response = null; try { // 执行请求 response = httpclient.execute(httpPost); // 判断返回状态是否为200 if (response.getStatusLine().getStatusCode() == 200) { String content = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(content); } } finally { if (response != null) { response.close(); } httpclient.close(); } }
服务器端
这里MediaType可以设置多个值
/** * !!!如果不设置返回的数据会乱码 * 设置返回响应数据的数据类型和编码格式 * produces=MediaType.TEXT_PLAIN_VALUE+";charset=utf-8" */ @RequestMapping(value="/httpclient/post",method=RequestMethod.POST,produces=MediaType.TEXT_PLAIN_VALUE+";charset=utf-8") @ResponseBody public String testPost(String username,String password){ return "username:"+username+" "+"password:"+password; }
请求端
/** * 带参数的post */ public static void doPostWithParamater() throws Exception{ // 创建Httpclient对象 CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建http POST请求 //!!!注意参数不能在URL中添加 HttpPost httpPost = new HttpPost("http://localhost:8082/httpclient/post"); //创建一个Entity,模拟一个表单 List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("username", "张三")); parameters.add(new BasicNameValuePair("password", "java")); // 构造一个form表单式的实体 UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters,"GBK"); //设置请求的内容 httpPost.setEntity(formEntity); CloseableHttpResponse response = null; try { // 执行请求 response = httpclient.execute(httpPost); // 判断返回状态是否为200 if (response.getStatusLine().getStatusCode() == 200) { String content = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(content); } } finally { if (response != null) { response.close(); } httpclient.close(); } }