请问:我有一个get方法,在postman中可以获取到body。但是用另外一个方法向这个url发送请求时,无法接收到body是为什么.
@GetMapping ("/ip")
// , @RequestBody Object body
public Object getIp( HttpServletRequest request,@RequestBody Object body ) throws IOException {
System.out.println( body );
return body;
}
@GetMapping("/submitIp")
public String getIpByThisIp(HttpServletRequest request){
String authorization = request.getHeader( "authorization" );
String url = "http://localhost:30999/httpbin/ip";
HttpHeaders headers = new HttpHeaders();
headers.setContentType( MediaType.APPLICATION_JSON );
String jsonAuthorization = JSONObject.toJSONString( authorization );
HttpEntity entity = new HttpEntity( jsonAuthorization,headers );
HttpMethod method = HttpMethod.GET;
ResponseEntity< String > exchange = restTemplate.exchange( url, method, entity, String.class );
return "ok";
}
postman没有限制get请求还能发送body数据,但是java的客户端和js基本都限制了,你发送get请求就会丢弃body,发json就别用get
不知道你这个问题是否已经解决, 如果还没有解决的话:可能原因:
另一个方法发送的请求没有正确设置请求头,导致服务器无法正确解析请求体。 解决方案:设置Content-Type请求头为对应请求体的类型,例如application/json或application/x-www-form-urlencoded。
另一个方法发送的请求没有正确设置请求体,或请求体格式不正确,导致无法正确传输请求体。 解决方案:检查请求体格式是否正确,并确保请求体已正确设置。
另一个方法发送的请求存在跨域问题,导致服务器无法接收到请求体。 解决方案:采用JSONP、CORS等方式解决跨域问题,确保请求已能正常到达服务器。
针对不同情况的解决方案可能不同,可以根据具体情况进行调整。在代码实现上,可以通过设置请求头、请求体和处理跨域等方式来解决。例如使用fetch API发送POST请求时,可以通过设置headers和body选项来发送请求体,并设置mode为cors来处理跨域问题。代码示例:
fetch(url, {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
}).then(response => {
// 处理响应
}).catch(error => {
// 处理错误
});