RestUtil.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.izouma.tcg.utils;
  2. import com.alibaba.fastjson.JSONObject;
  3. import org.apache.commons.httpclient.*;
  4. import org.apache.commons.httpclient.methods.GetMethod;
  5. import org.apache.commons.httpclient.methods.PostMethod;
  6. import org.apache.commons.httpclient.params.HttpMethodParams;
  7. import java.io.IOException;
  8. public class RestUtil {
  9. /**
  10. * httpClient的get请求方式
  11. * 使用GetMethod来访问一个URL对应的网页实现步骤:
  12. * 1.生成一个HttpClient对象并设置相应的参数;
  13. * 2.生成一个GetMethod对象并设置响应的参数;
  14. * 3.用HttpClient生成的对象来执行GetMethod生成的Get方法;
  15. * 4.处理响应状态码;
  16. * 5.若响应正常,处理HTTP响应内容;
  17. * 6.释放连接。
  18. *
  19. * @param url
  20. * @param charset
  21. * @return
  22. */
  23. public static String doGet(String url, String charset) {
  24. //1.生成HttpClient对象并设置参数
  25. HttpClient httpClient = new HttpClient();
  26. //设置Http连接超时为5秒
  27. httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
  28. //2.生成GetMethod对象并设置参数
  29. GetMethod getMethod = new GetMethod(url);
  30. //设置get请求超时为5秒
  31. getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
  32. //设置请求重试处理,用的是默认的重试处理:请求三次
  33. getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
  34. String response = "";
  35. //3.执行HTTP GET 请求
  36. try {
  37. int statusCode = httpClient.executeMethod(getMethod);
  38. //4.判断访问的状态码
  39. if (statusCode != HttpStatus.SC_OK) {
  40. System.err.println("请求出错:" + getMethod.getStatusLine());
  41. }
  42. //5.处理HTTP响应内容
  43. //HTTP响应头部信息,这里简单打印
  44. Header[] headers = getMethod.getResponseHeaders();
  45. for (Header h : headers) {
  46. System.out.println(h.getName() + "---------------" + h.getValue());
  47. }
  48. //读取HTTP响应内容,这里简单打印网页内容
  49. //读取为字节数组
  50. byte[] responseBody = getMethod.getResponseBody();
  51. response = new String(responseBody, charset);
  52. System.out.println("-----------response:" + response);
  53. //读取为InputStream,在网页内容数据量大时候推荐使用
  54. //InputStream response = getMethod.getResponseBodyAsStream();
  55. } catch (HttpException e) {
  56. //发生致命的异常,可能是协议不对或者返回的内容有问题
  57. System.out.println("请检查输入的URL!");
  58. e.printStackTrace();
  59. } catch (IOException e) {
  60. //发生网络异常
  61. System.out.println("发生网络异常!");
  62. } finally {
  63. //6.释放连接
  64. getMethod.releaseConnection();
  65. }
  66. return response;
  67. }
  68. /**
  69. * post请求
  70. *
  71. * @param url
  72. * @param json
  73. * @return
  74. */
  75. public static String doPost(String url, JSONObject json) {
  76. HttpClient httpClient = new HttpClient();
  77. PostMethod postMethod = new PostMethod(url);
  78. postMethod.addRequestHeader("accept", "*/*");
  79. postMethod.addRequestHeader("connection", "Keep-Alive");
  80. //设置json格式传送
  81. postMethod.addRequestHeader("Content-Type", "application/json;charset=GBK");
  82. //必须设置下面这个Header
  83. postMethod
  84. .addRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
  85. //添加请求参数
  86. postMethod.addParameter("commentId", json.getString("commentId"));
  87. String res = "";
  88. try {
  89. int code = httpClient.executeMethod(postMethod);
  90. if (code == 200) {
  91. res = postMethod.getResponseBodyAsString();
  92. System.out.println(res);
  93. }
  94. } catch (IOException e) {
  95. e.printStackTrace();
  96. }
  97. return res;
  98. }
  99. public static void main(String[] args) {
  100. System.out.println(doGet("http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=13026194071", "GBK"));
  101. System.out.println("-----------分割线------------");
  102. System.out.println("-----------分割线------------");
  103. System.out.println("-----------分割线------------");
  104. JSONObject jsonObject = new JSONObject();
  105. jsonObject.put("commentId", "13026194071");
  106. System.out.println(doPost("http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=13026194071", jsonObject));
  107. }
  108. }