赞
踩
需求 三方接口 restful请求 POST方式 参数JSON 接收数据JSON
public class RestUtil { public String postMethod(String url,String param){ // 结果值 StringBuffer rest=new StringBuffer(); HttpURLConnection conn=null; OutputStream out=null; BufferedReader br=null; try { // 创建 URL URL restUrl = new URL(url); // 打开连接 conn= (HttpURLConnection) restUrl.openConnection(); // 设置请求方式为 POST conn.setRequestMethod("POST"); conn.setRequestProperty("Connection","keep-Alive"); // 设置接收文件类型 // conn.setRequestProperty("Accept","application/json"); //设置发送文件类型 /** 这里注意 传递JSON数据的话 就要设置 普通参数的话 就要注释掉 */ conn.setRequestProperty("Content-Type","application/json"); // 输入 输出 都打开 conn.setDoOutput(true); conn.setDoInput(true); //开始连接 conn.connect(); // 传递参数 流的方式 out=conn.getOutputStream(); out.write(param.getBytes()); out.flush(); // 读取数据 br=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8")); String line=null; while (null != (line=br.readLine())){ rest.append(line); } } catch (Exception e) { e.printStackTrace(); }finally { // 关闭所有通道 try { if (br!=null) { br.close(); } if (out!=null) { out.close(); } if (conn!=null) { conn.disconnect(); } } catch (Exception e2) { e2.printStackTrace(); } } return rest.toString(); } }
@GetMapping("/getData") public String getData() { RestUtil restUtil = new RestUtil(); String IP = "127.0.0.1"; String url = "http://" + IP + "/server/data"; String level = "0"; String dateTime = "2020-10"; // 参数 String param; // 接收数据 String result; /** * 第一种 参数为JSON * 要打开设置 conn.setRequestProperty("Content-Type","application/json"); */ param = "{\"level\":\"" + level + "\",\"dateTime\":\"" + dateTime + "\"}"; result = restUtil.postMethod(url, param); /** * 第二种 直接传递参数 * 关闭 conn.setRequestProperty("Content-Type","application/json"); */ StringBuffer dataBuffer = new StringBuffer(); try { dataBuffer.append(URLEncoder.encode("level", "UTF-8")); dataBuffer.append("="); dataBuffer.append(URLEncoder.encode(level, "UTF-8")); dataBuffer.append("&"); dataBuffer.append(URLEncoder.encode("dateTime", "UTF-8")); dataBuffer.append("="); dataBuffer.append(URLEncoder.encode(dateTime, "UTF-8")); param = dataBuffer.toString(); result = restUtil.postMethod(url, param); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } //接收的数据 System.out.println("result==" + result); // 然后对 数据 进行 JSON解析 JSONObject jsonObject = JSON.parseObject(result); String code = jsonObject.get("code") == null ? "" : jsonObject.get("code").toString(); String message = jsonObject.get("message") == null ? "" : jsonObject.get("message").toString(); dateTime = jsonObject.get("dateTime") == null ? "" : jsonObject.get("dateTime").toString(); JSONArray dataJsonArray = (JSONArray) jsonObject.get("data"); if (null != dataJsonArray && dataJsonArray.size() > 0) { for (int i = 0; i < dataJsonArray.size(); i++) { JSONObject data = (JSONObject) dataJsonArray.get(i); String account = data.get("account") == null ? "" : data.get("account").toString(); String name = data.get("name") == null ? "" : data.get("name").toString(); System.out.println("code==" + code + "++message==" + message + "++dateTime==" + dateTime + "++account==" + account + "++name==" + name); } } return "success"; }
//读取流中的json数据
BufferedReader br=null;
StringBuffer result=null;
try {
br=new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
String line=null;
while (null!=(line=br.readLine())){
result.append(line);
}
System.out.println("接收参数:"+result.toString());
} catch (Exception e) {
e.printStackTrace();
}
/**
* 如果是参数的方式
*/
String level = request.getParameter("level");
String dateTime = request.getParameter("dateTime");
return "{\"code\":\"100001\",\"message\":\"请求成功\",\"dateTime\":\"2020-10\"," +
"\"data\":[{\"account\":\"zhangsan\",\"name\":\"张三\"}," +
"{\"account\":\"lisi\",\"name\":\"李四\"}," +
"{\"account\":\"wangwu\",\"name\":\"王五\"}," +
"{\"account\":\"xiaoliu\",\"name\":\"小六\"}]}";
public static void main(String[] args) { // hutool // get 请求 String getRequestStringUrl = "http://localhost:8080/getRequest?id=1"; HttpRequest.get(getRequestStringUrl).timeout(5 * 60 * 1000).execute(); // post 请求 传递json参数 String postRequestStringUrl = "http://localhost:8080/postRequest"; // 参数 JSONObject jsonObject = new JSONObject(); jsonObject.put("data","123"); jsonObject.put("email","123456@163.com"); // 设置请求头 Map<String, String > heads = new HashMap<>(); heads.put("Content-Type", "application/json;charset=UTF-8"); // 纯请求 要结果的话 最后加 .body() HttpRequest.post(postRequestStringUrl) // url .headerMap(heads, false) // 请求头设置 .body(jsonObject.toJSONString()) // json参数 .timeout(5 * 60 * 1000) // 超时 .execute(); // 请求 // .body(); // 返回值 }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。