1 package com.lwl.util; 2 3 import sun.misc.BASE64Encoder; 4 5 import java.io.*; 6 import java.net.HttpURLConnection; 7 import java.net.URL; 8 import java.net.URLConnection; 9 import java.nio.charset.StandardCharsets; 10 11 /** 12 * post請求 13 * 14 * @author liuwenlong 15 * @create 2021-11-30 22:25:00 16 */ 17 @SuppressWarnings("all") 18 public class SendPost { 19 20 /** 21 * Post請求一個地址 22 * 23 * @param URL 請求地址 24 * @param requestBody 請求的body 25 * @return 26 */ 27 public String doPost(String URL, String requestBody) { 28 OutputStreamWriter out = null; 29 BufferedReader in = null; 30 StringBuilder result = new StringBuilder(); 31 HttpURLConnection conn = null; 32 String username = "賬號"; 33 String password = "密碼"; 34 String input = username + ":" + password; 35 try { 36 java.net.URL url = new URL(URL); 37 conn = (HttpURLConnection) url.openConnection(); 38 BASE64Encoder base = new BASE64Encoder(); 39 String encodedPassword = base.encode(input.getBytes("UTF-8")); 40 System.out.println("加密后的密碼:" + encodedPassword); 41 //將加密的賬號密碼放到請求頭里,這里注意Basic后面要加空格 42 conn.setRequestProperty("Authorization", "Basic " + encodedPassword); 43 conn.setRequestMethod("POST"); 44 //發送POST請求必須設置為true 45 conn.setDoOutput(true); 46 conn.setDoInput(true); 47 //設置連接超時時間和讀取超時時間 48 conn.setConnectTimeout(3000); 49 conn.setReadTimeout(3000); 50 conn.setRequestProperty("Content-Type","application/json;charset=UTF-8"); 51 conn.setRequestProperty("Accept", "application/json"); 52 //獲取輸出流,寫入請求的json報文 53 out = new OutputStreamWriter(conn.getOutputStream(),"utf-8"); 54 System.out.println(requestBody); 55 56 out.write(requestBody); //獲取請求的body, 57 out.flush(); 58 out.close(); 59 //取得輸入流,並使用Reader讀取 60 if (200 == conn.getResponseCode()) { 61 in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); 62 String line; 63 while ((line = in.readLine()) != null) { 64 result.append(line); 65 System.out.println(line); 66 } 67 } else { 68 System.out.println("ResponseCode is an error code:" + conn.getResponseCode()); 69 } 70 } catch (Exception e) { 71 e.printStackTrace(); 72 } finally { 73 try { 74 if (out != null) { 75 out.close(); 76 } 77 if (in != null) { 78 in.close(); 79 } 80 } catch (IOException ioe) { 81 ioe.printStackTrace(); 82 } 83 } 84 return result.toString(); 85 } 86 87 }
注意,OutputStreamWriter 后面要添加 utf-8