Java 发送Http的post请求,后端用@RequestBody接收参数的

📅 发布时间:2026/9/13 20:11:04
Java 发送Http的post请求,后端用@RequestBody接收参数的
工具类utilspackage co.yixiang.utils;importcom.alibaba.fastjson.JSONObject;importjava.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLConnection;importjava.net.URLEncoder;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Map;/** * author *** * data2020/7/3 */ public class HttpUtil{/** * 向指定URL发送GET方法的请求 * * param url * 发送请求的URL * param param * 请求参数 * param authorization * 请求参数(允许为空)* param cookie * 请求参数(允许为空)* return URL 所代表远程资源的响应结果 */ public static String sendGet(String url, MapString, Stringparam, String authorization, String cookie){String result;BufferedReaderinnull;try{StringBuffer querynew StringBuffer();for(Map.EntryString, Stringkv:param.entrySet()){query.append(URLEncoder.encode(kv.getKey(),UTF-8));query.append(URLEncoder.encode(kv.getValue(),UTF-8));}if(query.lastIndexOf()0){query.deleteCharAt(query.length()-1);}String urlNameStringurl ? query.toString();URL realUrlnew URL(urlNameString);// 打开和URL之间的连接 URLConnection connectionrealUrl.openConnection();// 设置通用的请求属性 connection.setRequestProperty(accept,*/*);connection.setRequestProperty(connection,Keep-Alive);connection.setRequestProperty(user-agent,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1));connection.setRequestProperty(Content-Type,application/json;charsetUTF-8);if(authorization!null){connection.setRequestProperty(Authorization, authorization);}if(cookie!null){connection.setRequestProperty(Cookie, cookie);}// 建立实际的连接 connection.connect();// 定义 BufferedReader输入流来读取URL的响应innew BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while((linein.readLine())!null){resultline;}}catch(Exception e){e.printStackTrace();}// 使用finally块来关闭输入流 finally{try{if(in!null){in.close();}}catch(Exception e2){e2.printStackTrace();}}returnresult;}/** * 向指定 URL 发送POST方法的请求 * * param url * 发送请求的 URL * param param * 请求参数 * param authorization * 请求参数(允许为空)* param cookie * 请求参数(允许为空)* return 所代表远程资源的响应结果 */ public static String sendPost(String url, MapString, Stringparam, String authorization, String cookie){PrintWriter outnull;BufferedReaderinnull;String result;try{String para;for(String key:param.keySet()){para(key param.get(key));}if(para.lastIndexOf()0){paranew String(para.substring(0, para.length()-1));}String urlNameStringurl ? para;URL realUrlnew URL(urlNameString);// 打开和URL之间的连接 HttpURLConnection conn(HttpURLConnection)realUrl.openConnection();// 设置通用的请求属性 conn.setRequestProperty(accept,*/*);conn.setRequestProperty(connection,Keep-Alive);conn.setRequestProperty(user-agent,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1));conn.setRequestProperty(Content-Type,application/json;charsetUTF-8);if(authorization!null){conn.setRequestProperty(Authorization, authorization);}if(cookie!null){conn.setRequestProperty(Cookie, cookie);}// 发送POST请求必须设置如下两行 conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流 outnew PrintWriter(conn.getOutputStream());// 发送请求参数 out.print(param);// flush输出流的缓冲 out.flush();// 定义BufferedReader输入流来读取URL的响应innew BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while((linein.readLine())!null){resultline;}}catch(Exception e){e.printStackTrace();}// 使用finally块来关闭输出流、输入流 finally{try{if(out!null){out.close();}if(in!null){in.close();}}catch(IOException ex){ex.printStackTrace();}}returnresult;}/** * 发送post请求 * param url * 发送请求的 URL * param param * 请求参数 * param authorization * 请求参数(允许为空)* param cookie * 请求参数(允许为空)* return 所代表远程资源的响应结果 */ public static String sendPost(String url, String param, String authorization, String cookie){PrintWriter outnull;BufferedReaderinnull;String result;try{URL realUrlnew URL(url ? param);// 打开和URL之间的连接 URLConnection connrealUrl.openConnection();// 设置通用的请求属性 conn.setRequestProperty(accept,*/*);conn.setRequestProperty(connection,Keep-Alive);conn.setRequestProperty(user-agent,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1));conn.setRequestProperty(Content-Type,application/json;charsetUTF-8);if(authorization!null){conn.setRequestProperty(Authorization, authorization);}if(cookie!null){conn.setRequestProperty(Cookie, cookie);}// 发送POST请求必须设置如下两行 conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流 outnew PrintWriter(conn.getOutputStream());// 发送请求参数 out.print(param);// flush输出流的缓冲 out.flush();// 定义BufferedReader输入流来读取URL的响应innew BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while((linein.readLine())!null){resultline;}}catch(Exception e){e.printStackTrace();}//使用finally块来关闭输出流、输入流 finally{try{if(out!null){out.close();}if(in!null){in.close();}}catch(IOException ex){ex.printStackTrace();}}returnresult;}public static void main(String[]args){//请求参数 String body{\status\:[1],\customerid\:[\20000047\],\sdorderno\:[1580459238218],\total_fee\:[\100.00\],\paytime\:[1580459238218],\sign\:[\a0397aef701f13e79133566582afa903\]};//请求头可变根据实际来 String authorizationBearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0IiwiYXV0aCI6ImliRXF1aXBtZW50TGlzdDplZGl0LGliQmFua0NhcmRMaXN0Omxpc3QsaWJCYW5rRmxvdzpsaXN0LGliRGlzYnVyc2VtZW50UmVjb3JkOmxpc3QsaWJCYW5rQ2FyZExpc3Q6YWRkLGliQmFua0NhcmRMaXN0OmVkaXQsaWJEaXNidXJzZW1lbnQ6YWRkLGliUGF5bWVudE9yZGVyOmRlbCxpYkJhbmtBbGFybTpkZWwsaWJFcXVpcG1lbnRBbGFybTplZGl0LHRlc3QsaWJCYW5rQWxhcm06ZWRpdCxpYkRpc2J1cnNlbWVudDpsaXN0LGliRXF1aXBtZW50QWxhcm06ZGVsLGliUGF5bWVudE9yZGVyOmxpc3QsaWJQYXltZW50T3JkZXI6YWRkLGliRXF1aXBtZW50TGlzdDpkZWwsaWJCYW5rQWxhcm06bGlzdCxpYkJhbmtDYXJkTGlzdDpkZWwsaWJFcXVpcG1lbnRMaXN0OmFkZCxpYk1lcmNoYW50SW5mb3JtYXRpb246bGlzdCxpYkVxdWlwbWVudEFsYXJtOmxpc3QsaWJFcXVpcG1lbnRMaXN0Omxpc3QsaWJEaXNidXJzZW1lbnQ6ZGVsLGliRGlzYnVyc2VtZW50OmVkaXQsaWJQYXltZW50T3JkZXI6ZWRpdCIsImV4cCI6MTU5Mzc4MzUwMn0.p_AEZfwErkRQCJ9ctZBNgf9fniLPGogV9rxSGyZEqStOOv7YEdAcefsAJNnUxzOOhLCdwhGBBAEDDVn3x43A3A;//cookie值可变根据实际来 String cookieYSHOP-TOEKNBearer%20eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0IiwiYXV0aCI6ImliRXF1aXBtZW50TGlzdDplZGl0LGliQmFua0NhcmRMaXN0Omxpc3QsaWJCYW5rRmxvdzpsaXN0LGliRGlzYnVyc2VtZW50UmVjb3JkOmxpc3QsaWJCYW5rQ2FyZExpc3Q6YWRkLGliQmFua0NhcmRMaXN0OmVkaXQsaWJEaXNidXJzZW1lbnQ6YWRkLGliUGF5bWVudE9yZGVyOmRlbCxpYkJhbmtBbGFybTpkZWwsaWJFcXVpcG1lbnRBbGFybTplZGl0LHRlc3QsaWJCYW5rQWxhcm06ZWRpdCxpYkRpc2J1cnNlbWVudDpsaXN0LGliRXF1aXBtZW50QWxhcm06ZGVsLGliUGF5bWVudE9yZGVyOmxpc3QsaWJQYXltZW50T3JkZXI6YWRkLGliRXF1aXBtZW50TGlzdDpkZWwsaWJCYW5rQWxhcm06bGlzdCxpYkJhbmtDYXJkTGlzdDpkZWwsaWJFcXVpcG1lbnRMaXN0OmFkZCxpYk1lcmNoYW50SW5mb3JtYXRpb246bGlzdCxpYkVxdWlwbWVudEFsYXJtOmxpc3QsaWJFcXVpcG1lbnRMaXN0Omxpc3QsaWJEaXNidXJzZW1lbnQ6ZGVsLGliRGlzYnVyc2VtZW50OmVkaXQsaWJQYXltZW50T3JkZXI6ZWRpdCIsImV4cCI6MTU5Mzc4MzUwMn0.p_AEZfwErkRQCJ9ctZBNgf9fniLPGogV9rxSGyZEqStOOv7YEdAcefsAJNnUxzOOhLCdwhGBBAEDDVn3x43A3A;StringjsionResultHttpUtil.sendPost(http://192.168.18.1:8013/api/callback,body,authorization,cookie);System.out.println(jsionResult);}}后台接受请求的Controller类里请求对应的方法/** * 测试方法 * / PostMapping(value/callback)Log(订单回调到下游)ApiOperation(订单回调到下游)public ResponseEntityObjectcallback(RequestBody MapString,ObjectcallbackPama){returnnew ResponseEntity(ibBankOrderApiService.callback(callbackPama), HttpStatus.OK);}这种方式类似于用Java的方式模拟postman软件里的post请求