HTTP客户端工具

灰太狼 2023-10-18 19:04 142阅读 0赞

使用jdk原生URLConnection发送Post请求和Get请求的HTTP客户端工具

  1. package com.douyin.util;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.URL;
  7. import java.net.URLConnection;
  8. /**
  9. * HTTP客户端工具
  10. *
  11. */
  12. public class HttpClientUtil {
  13. /**
  14. * 发送Get请求
  15. *
  16. * @param url
  17. * 发送请求的URL
  18. * @param param
  19. * 请求参数,请求参数应该是name1=value1&name2=value2的形式。
  20. * @return URL所代表远程资源的响应
  21. */
  22. public static String sendGet(String url, String param) {
  23. String result = "";
  24. BufferedReader in = null;
  25. try {
  26. String urlName = url + "?" + param;
  27. URL realUrl = new URL(urlName);
  28. // 打开和URL之间的连接
  29. URLConnection conn = realUrl.openConnection();
  30. // 设置通用的请求属性
  31. conn.setRequestProperty("accept", "*/*");
  32. conn.setRequestProperty("connection", "Keep-Alive");
  33. conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
  34. // 建立实际的连接
  35. conn.connect();
  36. // 获取所有响应头字段
  37. // Map<String, List<String>> map = conn.getHeaderFields();
  38. // 定义BufferedReader输入流来读取URL的响应
  39. in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  40. String line;
  41. while ((line = in.readLine()) != null) {
  42. result += "\n" + line;
  43. }
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. }
  47. // 使用finally块来关闭输入流
  48. finally {
  49. try {
  50. if (in != null) {
  51. in.close();
  52. }
  53. } catch (IOException ex) {
  54. ex.printStackTrace();
  55. }
  56. }
  57. return result;
  58. }
  59. /**
  60. * 发送POST请求
  61. *
  62. * @param url
  63. * 发送请求的URL
  64. * @param param
  65. * 请求参数,请求参数应该是name1=value1&name2=value2的形式。
  66. * @return URL所代表远程资源的响应
  67. */
  68. public static String sendPost(String url, String param) {
  69. PrintWriter out = null;
  70. BufferedReader in = null;
  71. String result = "";
  72. try {
  73. URL realUrl = new URL(url);
  74. // 打开和URL之间的连接
  75. URLConnection conn = realUrl.openConnection();
  76. // 设置cookie
  77. // conn.setRequestProperty("cookie", "");
  78. // 设置通用的请求属性
  79. conn.setRequestProperty("accept", "*/*");
  80. conn.setRequestProperty("connection", "Keep-Alive");
  81. conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
  82. // 发送POST请求必须设置如下两行
  83. conn.setDoOutput(true);
  84. conn.setDoInput(true);
  85. // 获取URLConnection对象对应的输出流
  86. out = new PrintWriter(conn.getOutputStream());
  87. // 发送请求参数
  88. out.print(param);
  89. // flush输出流的缓冲
  90. out.flush();
  91. // 定义BufferedReader输入流来读取URL的响应
  92. in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  93. String line;
  94. while ((line = in.readLine()) != null) {
  95. result += "\n" + line;
  96. }
  97. } catch (Exception e) {
  98. e.printStackTrace();
  99. }
  100. // 使用finally块来关闭输出流、输入流
  101. finally {
  102. try {
  103. if (out != null) {
  104. out.close();
  105. }
  106. if (in != null) {
  107. in.close();
  108. }
  109. } catch (IOException ex) {
  110. ex.printStackTrace();
  111. }
  112. }
  113. return result;
  114. }
  115. }

发表评论

表情:
评论列表 (有 0 条评论,142人围观)

还没有评论,来说两句吧...

相关阅读