使用Android的Spring RestTemplate进行经过身份验证的POST请求

尼克·多尔蒂(Nick Daugherty):

我有一个RESTful API,我正尝试通过Android和RestTemplate与之连接。通过设置HttpEntity的标头,然后使用RestTemplate的exchange()方法,对HTTP的所有请求均通过HTTP身份验证进行身份验证

所有GET请求都可以通过这种方式很好地工作,但是我无法弄清楚如何完成经过身份验证的POST请求。postForObjectpostForEntity处理POST,但没有简单的方法来设置Authentication标头。

因此,对于GET来说,效果很好:

HttpAuthentication httpAuthentication = new HttpBasicAuthentication("username", "password");
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAuthorization(httpAuthentication);

HttpEntity<?> httpEntity = new HttpEntity<Object>(requestHeaders);

MyModel[] models = restTemplate.exchange("/api/url", HttpMethod.GET, httpEntity, MyModel[].class);

但是POST显然不起作用,exchange()因为它从不发送自定义标头,并且我看不到如何使用来设置请求正文exchange()

从RestTemplate发出经过身份验证的POST请求的最简单方法是什么?

尼克·多尔蒂(Nick Daugherty):

确定找到了答案。exchange()是最好的方法。奇怪的是,HttpEntity该类没有setBody()方法(它具有getBody()),但是仍然可以通过构造函数设置请求主体。

// Create the request body as a MultiValueMap
MultiValueMap<String, String> body = new LinkedMultiValueMap<String, String>();     

body.add("field", "value");

// Note the body object as first parameter!
HttpEntity<?> httpEntity = new HttpEntity<Object>(body, requestHeaders);

MyModel model = restTemplate.exchange("/api/url", HttpMethod.POST, httpEntity, MyModel.class);

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DRF:无法使用标头中的令牌进行经过身份验证的呼叫

使用 spring restTemplate 对 POST REST API 进行身份验证

通过POST使用请求库进行python身份验证

如何使用令牌身份验证对 Post 请求进行身份验证?

如何在Django中使用Pytest测试经过身份验证的POST请求

使用git commit强制执行经过身份验证的用户名(在这种情况下为Gitlab)

使用slackbot发出经过身份验证的请求

使用 Go 发出经过身份验证的代理请求?

使用Python请求访问经过身份验证的页面

如何使用经过身份验证的代理启动 chrome 并使用 puppeteer 对其进行身份验证

用axios进行经过身份验证的请求时,Jest返回“网络错误”

使用RestTemplate的Spring Security身份验证

如何确保使用POST请求从我的应用中对用户进行身份验证?

使用 POST 请求的身份验证无法验证数据

使用 AWS Cognito 联合身份进行身份验证失败,因为用户未经过身份验证

有没有一种简单的方法可以使用curl运行经过身份验证的Google Analytics(分析)查询?

Spring Security Java配置不会拦截仅对经过身份验证的源可用的访问JSP的请求

使用请求通知程序对BasicHttpBinding进行身份验证

Django使用python请求进行身份验证

使用请求和上下文进行身份验证

使用Python请求进行Cookie身份验证

尝试使用节点请求进行身份验证

使用python和请求进行Instagram身份验证

使用Python请求进行Magiccardmarket的OAuth身份验证

使用请求进行身份验证后的Web抓取

使用Java http请求进行Twitch身份验证

使用Javascript发出HTTP POST身份验证基本请求

Spring RestTemplate和代理身份验证

使用Spring Security进行身份验证