使用jdk自带API调用外部接口

╰+哭是因爲堅強的太久メ 2021-11-05 06:14 340阅读 0赞

工具类

  1. import org.slf4j.Logger;
  2. import org.slf4j.LoggerFactory;
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.UnsupportedEncodingException;
  7. import java.net.HttpURLConnection;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import java.net.URLEncoder;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. /** * @author 72038611 */
  14. public class HttpClientUtils {
  15. public static final Logger LOGGER = LoggerFactory.getLogger(HttpClientUtils.class);
  16. private HttpClientUtils() {
  17. }
  18. /** * 向指定URL发送GET方法的请求 * * @param url 发送请求的URL 例如:http://localhost:8080/demo/login * @param param 请求参数 例:{ "userName":"admin", "password":"123456" } * @return URL 所代表远程资源的响应结果 */
  19. public static String sendGet(String url, Map<String, Object> param) throws Exception {
  20. StringBuilder result = new StringBuilder();
  21. BufferedReader in = null;
  22. try {
  23. URL realUrl = createURL(url, param);
  24. HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
  25. conn.setRequestProperty("accept", "*/*");
  26. conn.setRequestProperty("connection", "Keep-Alive");
  27. conn.setRequestProperty("Charset", "UTF-8");
  28. conn.connect();
  29. in = new BufferedReader(new InputStreamReader(
  30. conn.getInputStream()));
  31. String line;
  32. while ((line = in.readLine()) != null) {
  33. result.append(line);
  34. }
  35. } catch (Exception e) {
  36. LOGGER.error("发送GET请求出现异常!");
  37. throw e;
  38. } finally {
  39. try {
  40. if (in != null) {
  41. in.close();
  42. }
  43. } catch (Exception e2) {
  44. LOGGER.error("流关闭异常!", e2);
  45. }
  46. }
  47. return result.toString();
  48. }
  49. /** * 向指定URL发送GET方法的请求 * * @param url 例如:http://localhost:8080/demo * @return result BufferedReader流 */
  50. public static BufferedReader sendGet(String url) throws Exception {
  51. URL realUrl = createURL(url, new HashMap<String, Object>(0));
  52. HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
  53. conn.setRequestProperty("accept", "*/*");
  54. conn.setRequestProperty("connection", "Keep-Alive");
  55. conn.setRequestProperty("Charset", "UTF-8");
  56. conn.connect();
  57. BufferedReader result = new BufferedReader(new InputStreamReader(
  58. conn.getInputStream()));
  59. return result;
  60. }
  61. /** * 向指定 URL 发送POST方法的请求 * * @param url 发送请求的URL 例如:http://localhost:8080/demo/login * @param param 请求参数 例:{ "userName":"admin", "password":"123456" } * @return 所代表远程资源的响应结果 */
  62. public static String sendPost(String url, Map<String, Object> param) {
  63. BufferedReader in = null;
  64. StringBuilder result = new StringBuilder();
  65. try {
  66. URL realUrl = createURL(url, param);
  67. // 打开和URL之间的连接
  68. HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
  69. // 发送POST请求必须设置
  70. conn.setDoOutput(true);
  71. conn.setDoInput(true);
  72. conn.setRequestMethod("POST");
  73. conn.setUseCaches(false);
  74. conn.setInstanceFollowRedirects(true);
  75. // 设置通用的请求属性
  76. conn.setRequestProperty("Charset", "UTF-8");
  77. conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
  78. conn.connect();
  79. // 定义BufferedReader输入流来读取URL的响应
  80. in = new BufferedReader(
  81. new InputStreamReader(conn.getInputStream()));
  82. String line;
  83. while ((line = in.readLine()) != null) {
  84. result.append(line);
  85. }
  86. } catch (Exception e) {
  87. System.out.println("发送 POST 请求出现异常!" + e);
  88. e.printStackTrace();
  89. } finally {
  90. try {
  91. if (in != null) {
  92. in.close();
  93. }
  94. } catch (IOException ex) {
  95. ex.printStackTrace();
  96. }
  97. }
  98. return result.toString();
  99. }
  100. private static URL createURL(String url, Map<String, Object> param) throws MalformedURLException {
  101. if (param == null || param.size() == 0) {
  102. return new URL(url);
  103. }
  104. StringBuilder sb = new StringBuilder(url);
  105. sb.append("?");
  106. for (String key : param.keySet()) {
  107. sb.append(key);
  108. sb.append("=");
  109. sb.append(encode(String.valueOf(param.get(key))));
  110. sb.append("&");
  111. }
  112. return new URL(sb.substring(0, sb.length() - 1));
  113. }
  114. private static String encode(String text) {
  115. try {
  116. return URLEncoder.encode(text, "UTF-8");
  117. } catch (UnsupportedEncodingException e) {
  118. e.printStackTrace();
  119. }
  120. return null;
  121. }
  122. }

发表评论

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

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

相关阅读