| | |
| | | OutputStreamWriter writer = null; |
| | | BufferedReader reader = null; |
| | | StringBuilder response = new StringBuilder(); |
| | | |
| | | try { |
| | | // 创建 URL 对象 |
| | | log.info("请求地址 ->{}",httpUrl); |
| | | URL url = new URL(httpUrl); |
| | | // 打开连接 |
| | | connection = (HttpURLConnection) url.openConnection(); |
| | | |
| | | // 设置请求方法为 POST |
| | | connection.setRequestMethod("POST"); |
| | | // 设置请求头 Content-Type 为 application/x-www-form-urlencoded |
| | | connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); |
| | | |
| | | // 如果需要 Authorization Header |
| | | if (authorization != null && !authorization.isEmpty()) { |
| | | connection.setRequestProperty("Authorization", authorization); |
| | | } |
| | | |
| | | // 设置允许输出 |
| | | connection.setDoOutput(true); |
| | | |
| | | // 构建表单数据 |
| | | StringBuilder postData = new StringBuilder(); |
| | | log.info("入参 ->{}", JSONUtil.toJsonStr(maps)); |
| | | for (Map.Entry<String, Object> entry : maps.entrySet()) { |
| | | if (postData.length() > 0) { |
| | | postData.append("&"); |
| | |
| | | .append("=") |
| | | .append(URLEncoder.encode(entry.getValue().toString(), "UTF-8")); |
| | | } |
| | | |
| | | // 获取输出流并写入表单数据 |
| | | writer = new OutputStreamWriter(connection.getOutputStream()); |
| | | writer.write(postData.toString()); |
| | | writer.flush(); |
| | | |
| | | // 获取响应 |
| | | reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); |
| | | String line; |
| | | while ((line = reader.readLine()) != null) { |
| | | response.append(line); |
| | | } |
| | | log.info("返回 ->{}",response); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } finally { |
| | | // 关闭流 |
| | | try { |
| | | if (writer != null) writer.close(); |
| | | if (reader != null) reader.close(); |
| | |
| | | DataOutputStream outStream = null; |
| | | BufferedReader reader = null; |
| | | StringBuilder response = new StringBuilder(); |
| | | |
| | | // 边界字符串 |
| | | String boundary = "----WebKitFormBoundary" + UUID.randomUUID().toString().replaceAll("-", ""); |
| | | String CRLF = "\r\n"; // 换行符 |
| | | |
| | | String CRLF = "\r\n"; |
| | | try { |
| | | // 创建 URL 对象 |
| | | log.info("请求地址 ->{}",httpUrl); |
| | | URL url = new URL(httpUrl); |
| | | // 打开连接 |
| | | connection = (HttpURLConnection) url.openConnection(); |
| | | |
| | | // 设置请求方法为 POST |
| | | connection.setRequestMethod("POST"); |
| | | // 设置请求头 Content-Type 为 multipart/form-data |
| | | connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); |
| | | |
| | | // 如果需要 Authorization Header |
| | | if (authorization != null && !authorization.isEmpty()) { |
| | | connection.setRequestProperty("Authorization", authorization); |
| | | } |
| | | |
| | | // 设置允许输出 |
| | | connection.setDoOutput(true); |
| | | |
| | | // 获取输出流 |
| | | log.info("入参 ->{}",maps); |
| | | outStream = new DataOutputStream(connection.getOutputStream()); |
| | | |
| | | // 遍历传入的表单数据,并按照 multipart/form-data 格式写入 |
| | | for (Map.Entry<String, Object> entry : maps.entrySet()) { |
| | | outStream.writeBytes("--" + boundary + CRLF); |
| | | outStream.writeBytes("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + CRLF); |
| | | outStream.writeBytes("Content-Type: text/plain; charset=UTF-8" + CRLF); |
| | | outStream.writeBytes(CRLF); // 这里是分隔符,空一行 |
| | | outStream.writeBytes(CRLF); |
| | | outStream.writeBytes(entry.getValue().toString() + CRLF); |
| | | } |
| | | |
| | | // 结束 multipart/form-data 发送数据部分 |
| | | outStream.writeBytes("--" + boundary + "--" + CRLF); |
| | | |
| | | // 刷新输出流 |
| | | outStream.flush(); |
| | | |
| | | // 获取响应 |
| | | reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); |
| | | String line; |
| | | while ((line = reader.readLine()) != null) { |
| | | response.append(line); |
| | | } |
| | | |
| | | log.info("返回 ->{}",response); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } finally { |
| | | // 关闭流 |
| | | try { |
| | | if (outStream != null) outStream.close(); |
| | | if (reader != null) reader.close(); |