发送请求的方法
public void toposttest(@RequestParam Integer devid,@RequestParam Integer caseid){
String params = "?none=&devid=" + devid + "&caseid=" + caseid;
String url = "api/localapi/getmany";
String str = PostUtil.updateDev(url, params);
//json字符串转json对象
JSONObject jsonHm = JSON.parseObject(str);
//json字符串转list实体类,
List<TsChannel> tss = JSON.parseArray(jsonHm.get("data").toString(),TsChannel.class);
}
转发请求的类
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
public class PostUtil {
private static String local = "http://127.0.0.1:80/";
public static String updateDev(String url, String params) {
String result = sendPostUrl(local + url, params);
return result;
}
/**
* 在后端发送post请求给自己 sendUrl (远程请求的URL) param (远程请求参数) JSONObject (远程请求返回的JSON)
*/
private static String sendPostUrl(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流(设置请求编码为UTF-8)
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 获取请求返回数据(设置返回数据编码为UTF-8)
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
}
Controller层的接收方法
@Slf4j
@Controller
@RequestMapping("api/localapi")
public class LocalApiController {
@Autowired
ChannelService channelService;
@RequestMapping("getmany")
@ResponseBody
public Result selectmany(Channel channel) {
List<Channel> l = channelService.selectmany(channel.getDevid());
return r.result("0001", l, "请求成功");
}
}
注意:当发送参数 的值中有"&"字符时,参数中的"&"及后面的字符串会被截掉
解决方法:
使用replace("&","#")把"&"字符替换成其他字符,在接收端再转回来replace("#","&")