当前位置: 首页 > 知识库问答 >
问题:

RestTemplate POST form URL编码数据出现400错误

祖迪
2023-03-14

我正在使用Spring(版本2.5.4)RESTTemplate对RESTendpoint(url)进行POST调用。以下是我的代码:

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    MultiValueMap<String,String> requestBody = new LinkedMultiValueMap<>();
    requestBody.add("token", "abc");
    HttpEntity<MultiValueMap<String,String>> request = new HttpEntity<>(requestBody, headers);
    try
    {       
        ResponseEntity<TokenValidationResponse> responseEntity = restTemplate.exchange(url, HttpMethod.POST, request, TokenValidationResponse.class);   
        TokenValidationResponse response = responseEntity.getBody();
        Boolean isActive = response.getActive();
        if(isActive == null || !isActive) {
            log.info("The token supplied isn't active");
        }
    }
    catch(RestClientException e)
    {
        log.error("An error occurred while posting query to security URI for token validation", e);
    }

我一直遇到400个坏请求-

org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: [{"error_description":"token parameter is required for the security endpoint.","error":"invalid_request"}]
    at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:101)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:186)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125)
    at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:602)

这是对安全endpointurl的要求-此endpoint仅接受HTTP POST方法。所需的Content-Type值为Application/x-www-form-urlencoded。endpoint具有以下参数:令牌

不过,我可以看到令牌正在传入。当我将令牌作为身体的一部分提供时,我能够验证POSTMAN上的呼叫工作正常。我想知道是否有什么我错过了?

共有1个答案

欧阳意蕴
2023-03-14

您需要在标头中指定令牌,例如:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "Bearer "+accessToken);

我建议看到这个帮助的帖子

 类似资料:
  • 我正在尝试对客户端凭据流进行身份验证,但一直返回错误400。我查看了可用的API,但看不出我做错了什么。如果有人能给我一个正确的方向,那太棒了。谢谢

  • 本文向大家介绍启用Csrf后POST数据时出现的400错误,包括了启用Csrf后POST数据时出现的400错误的使用技巧和注意事项,需要的朋友参考一下 最近一直出现这样的错误,一直在查找原因,偶然看到一篇解决的文章,分享给大家看看。 第一种解决办法是关闭Csrf 第二种解决办法是在form表单中加入隐藏域 <input name="_csrf" type="hidden" id="_csrf" v

  • 我正在codingbat上做一个编码练习,这就是我应该做的: 给定2个正int值,返回在10...20范围内的较大值,如果两者都不在该范围内,则返回0。 max1020(11、19)→ 19 max1020(19,11)→ 19 max1020(11,9)→ 11 max1020(9,21)→ 0 我的代码: 我不明白为什么它不起作用,它给了我这个错误:

  • 我在InteliJ/Java/RestAssured中收到一个400错误的POST请求,但在Postman中没有,所以谁能告诉我哪里出错了,请先告诉Postman 我的身体参数是 现在,当我发布这篇文章时,我得到了200条回复和一个不错的新访问令牌。当我在Java/RestAssured中尝试同样的方法时,我得到一个400错误的请求错误,这就是我发布的内容。 身体 每次运行这个程序,我都会收到HT

  • 我在向spring mvc控制器发送请求时遇到了一些问题。我有实体: 我收到一个HTTP/1.1400错误请求: 我做错了什么?

  • #这是我试图在我的电脑上运行的python代码,但它是Thowrsero,但我没有找到错误的图像回溯(最近的一次调用):文件“c:/Users/user/Desktop/projetcs/machine learning/mc1.py”,第4行,df=df['Adj.Open'、'Adj.High'、'Adj.Low'、'Adj.Close'、'Adj.Volume']]文件“c:\Users\u