POST请求不会在RestTemplate中添加请求的标头

麦克洛维奇

我必须User通过发送POST请求来获取

POST http://myurl.com/rest/user/getbyusername/{user} HTTP/1.0 token: uonIQz8WNE7UB5iR2V0ZYQ== User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;) Pragma: no-cache Content-Length: 0 Host: myurl.com

我正在尝试使用以下代码来做到这一点:

private User getByUsername(String username) {
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    List<String> list = new ArrayList<>();
    list.add(Params.token);
    headers.put("token", list);
    return restTemplate.postForObject("http://myurl.com/rest/user/getbyusername/{username}", headers, User.class,
            username);
}

控制器:

@ResponseBody
@RequestMapping(value = "getbyusername/{username}", 
                produces = "application/json", 
                method=RequestMethod.POST)
public String getByUsername(@PathVariable("username") 
                String username, HttpServletRequest request)
        throws IOException {
    if (!request.getHeader(headerName).isEmpty() && StringUtils.isNotBlank(token)
            && request.getHeader(headerName).equals(token)) {...}
}

可悲的是结果是Error 404我的代码缺少什么还是我做错了?提前致谢

乔纳森

您无法像当前一样设置标头,您需要将请求包装在中HttpEntity,例如:

RestTemplate restTemplate = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.set("token", Params.token);

HttpEntity<String> entity = new HttpEntity<>(username, headers);

restTemplate.postForObject("http://myurl.com/rest/user/getbyusername/{username}",
        entity,
        User.class);

postForObjectJavadocs中建议使用这种方法

或者,您可以实现ClientHttpRequestInterceptortoken标题附加到每个请求的。然后,您可以在上设置此RestTemplate

restTemplate.setInterceptors(new LinkedList<>(new MyTokenHeaderAddingInterceptor()));

这样可以省去您必须记住为每个请求发送标头的麻烦。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Internet Explorer 11不会在CORS请求上添加Origin标头吗?

来自分类Dev

Internet Explorer 11不会在CORS请求上添加Origin标头吗?

来自分类Dev

Unirest POST请求不会在PHP中运行

来自分类Dev

Android volley 不会在 POST 请求中调用 getParams

来自分类Dev

axios 不会在获取/发布请求时发送标头信息

来自分类Dev

Angular2不会在POST请求中传递参数

来自分类Dev

Angular2不会在POST请求中传递参数

来自分类Dev

grizzly不会在请求中记录异常

来自分类Dev

Spring RestTemplate到带有自定义标头和请求对象的POST请求

来自分类Dev

Swift:将标头添加到我的REST POST请求中

来自分类Dev

UITableView标头高度不会在情节提要中更改

来自分类Dev

如何在Nancyfx中添加请求标头?

来自分类Dev

在Laravel 4中向内部请求添加标头

来自分类Dev

在Laravel 4中向内部请求添加标头

来自分类Dev

如何在 AfNetworking 3.0 中向请求添加标头?

来自分类Dev

Alamofire 发布请求不会更改标头

来自分类Dev

Angular POST 请求的标头为空

来自分类Dev

添加自定义请求标头

来自分类Dev

如何使用AFNetworking添加请求标头?

来自分类Dev

向请求添加SOAP标头

来自分类Dev

UWP拦截Webview请求并添加标头

来自分类Dev

如何使用AFNetworking添加请求标头?

来自分类Dev

全局添加标头和超时请求

来自分类常见问题

如何在Spring RestTemplate请求上设置“ Accept:”标头?

来自分类Dev

是否可以将请求标头添加到CORS预检请求中?

来自分类Dev

Express会话变量不会在请求中持久存在

来自分类Dev

Rails不会在FreeBSD 9.1中的每个请求上重载控制器,助手

来自分类Dev

Swagger UI不会在多部分请求中传递部分的内容类型

来自分类Dev

永远不会在when.apply()。done()中输入的延迟Ajax请求数组

Related 相关文章

  1. 1

    Internet Explorer 11不会在CORS请求上添加Origin标头吗?

  2. 2

    Internet Explorer 11不会在CORS请求上添加Origin标头吗?

  3. 3

    Unirest POST请求不会在PHP中运行

  4. 4

    Android volley 不会在 POST 请求中调用 getParams

  5. 5

    axios 不会在获取/发布请求时发送标头信息

  6. 6

    Angular2不会在POST请求中传递参数

  7. 7

    Angular2不会在POST请求中传递参数

  8. 8

    grizzly不会在请求中记录异常

  9. 9

    Spring RestTemplate到带有自定义标头和请求对象的POST请求

  10. 10

    Swift:将标头添加到我的REST POST请求中

  11. 11

    UITableView标头高度不会在情节提要中更改

  12. 12

    如何在Nancyfx中添加请求标头?

  13. 13

    在Laravel 4中向内部请求添加标头

  14. 14

    在Laravel 4中向内部请求添加标头

  15. 15

    如何在 AfNetworking 3.0 中向请求添加标头?

  16. 16

    Alamofire 发布请求不会更改标头

  17. 17

    Angular POST 请求的标头为空

  18. 18

    添加自定义请求标头

  19. 19

    如何使用AFNetworking添加请求标头?

  20. 20

    向请求添加SOAP标头

  21. 21

    UWP拦截Webview请求并添加标头

  22. 22

    如何使用AFNetworking添加请求标头?

  23. 23

    全局添加标头和超时请求

  24. 24

    如何在Spring RestTemplate请求上设置“ Accept:”标头?

  25. 25

    是否可以将请求标头添加到CORS预检请求中?

  26. 26

    Express会话变量不会在请求中持久存在

  27. 27

    Rails不会在FreeBSD 9.1中的每个请求上重载控制器,助手

  28. 28

    Swagger UI不会在多部分请求中传递部分的内容类型

  29. 29

    永远不会在when.apply()。done()中输入的延迟Ajax请求数组

热门标签

归档