我用一个post请求到url传递参数,url接收参数多了个=
这是我的post请求方法
public static String sendPost(String url, String param) {
String result = "";
BufferedReader in = null;
try {
URL realUrl = new URL(url);
URLConnection connection = realUrl.openConnection();
//设置网络请求时间最多为5秒;
connection.setConnectTimeout(5000);
//读取网页请求结果时间为15秒
connection.setReadTimeout(25000);
//设置网络请求时间最多为5秒;
// 设置通用的请求属性
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.setDoOutput(true);
connection.setDoInput(true);
//设置请求编码格式
connection.setRequestProperty("Accept-Charset", "GBK");
connection.setRequestProperty("contentType", "GBK");
// 获取URLConnection对象对应的输出流
//文件流编码设置
OutputStreamWriter out = new OutputStreamWriter(connection
.getOutputStream(), "GBK");
out.write(param);
// flush输出流的缓冲
out.flush();
in = new BufferedReader(new InputStreamReader(
connection.getInputStream(),"UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
https://www.cnblogs.com/QTSS/p/8554981.html
如果请求方的请求头是text/plain等时,spring boot服务接口没有设置接受请求头,比如@RequestMappin默认application/x-www-form-urlencoded;charset=UTF-8进行参数处理,通过@RequestBody注解获取字符请求体时,请求体后面会多一个=号,因为spring boot 默认按form表单进行参数处理,把请求体进行url参数方式(key=value&key2=val2)进行处理,所以请求体会多出等号
----以上是复制的,共同学习,希望能解决你的问题
方法一、把注解去掉,直接接收就可以,@RequestBody把你传的参数当成一key,value为空;
方法二、不要穿JSON字符串,传JSON对象,用VO或者Map去接收(Content-Type:application/json)
看起来字符集好像没有统一,看一下