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

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

商兴朝
2023-03-14

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

所有的GET请求都可以通过这种方式工作,但是我不知道如何完成经过身份验证的POST请求。PostForObjectPostForEntity处理帖子,但是没有简单的方法来设置身份验证头。

因此,对于GETs,这非常有效:

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请求的最简单方法是什么?

共有1个答案

陶英纵
2023-03-14

Ok找到了答案。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);

ResponseEntity<MyModel> response = restTemplate.exchange("/api/url", HttpMethod.POST, httpEntity, MyModel.class);
 类似资料:
  • 问题内容: 我有一个RESTful API,我正尝试通过Android和RestTemplate与之连接。通过设置HttpEntity的标头,然后使用RestTemplate的方法,对HTTP的所有请求均通过HTTP身份验证进行身份验证。 所有GET请求都可以通过这种方式很好地工作,但是我无法弄清楚如何完成经过身份验证的POST请求。和处理POST,但没有简单的方法来设置Authenticatio

  • 我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢

  • jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。

  • 问题内容: 我可以通过接收到请求的xml 但不是 没有JavaScript错误,没有跨域策略问题。可能是语法错误,但是我找不到合适的教程。有什么建议吗? 问题答案: 我认为您需要纯格式:

  • 当使用Firebase Auth进行身份验证时,我想自动输入通过SMS接收的代码。我能够接收短信并手动完成身份验证过程,但当我使用SmsRetriever时,应用程序崩溃,然后显示底部工作表对话框。这是Logcat中显示的所有内容: [SmsRetrieverHelper]SMS校验码请求失败:未知状态代码:17010 null 用户输入其电话号码的代码片段: 这是片段中的代码,用户必须在其中输入

  • 我得到了一个使用fcm发送通知的应用程序,当我通过控制台发送消息时一切正常,但是当我尝试通过php(curl-post)或postman(firefox扩展)发送消息时,我得到了一个身份验证错误(甚至使用了密钥) 字符串(304)“{”错误:{”代码:401,“消息”:“请求缺少所需的身份验证凭据。应为OAuth 2访问令牌、登录cookie或其他有效身份验证凭据。请参阅https://devel