很多情况下,在开发中我们需要请求远程接口,向远程接口发送数据,HttpClient是经常采用的方式
使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。
1. 创建HttpClient对象。
2. 创建PostMethod对象,并指定访问的URL
3. PostMethod对象中通过addParameter()方法添加数据
4. 调用HttpClient对象的executeMethod(postMethod)发送请求,该方法返回一个状态码。
5. 通过返回的状态码判断是否访问成功,不成功解析返回信息
6. 释放连接。无论执行方法是否成功,都必须释放连接
public class HttpUtil { public static final String URL = "http://www.baidu.com:1221/Service.asmx/GetCheckdatetime"; public static String methodPost(JSONArray jsonArray) { String response="";// 要返回的response信息 HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod(URL); postMethod.addParameter("Json", jsonArray.toString());// 将表单的值放入postMethod中 NameValuePair teString=postMethod.getParameter("Json"); System.out.println(teString); int statusCode = 0; try { statusCode = httpClient.executeMethod(postMethod); } catch (IOException e) { e.printStackTrace(); } /** * 执行postMethod * HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发 * 301或者302 */ if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) { Header locationHeader = postMethod.getResponseHeader("location");// 从头中取出转向的地址 String location = null; if (locationHeader != null) { location = locationHeader.getValue(); System.out.println("The page was redirected to:" + location); response = methodPost(jsonArray);// 用跳转后的页面重新请求。 } else { System.err.println("Location field value is null."); } } else { System.out.println(postMethod.getStatusLine()); try { response = postMethod.getResponseBodyAsString(); System.out.println(response); } catch (IOException e) { e.printStackTrace(); } postMethod.releaseConnection(); } return response; } }