java - spring RestTemplate POST 请求的问题
问题描述
试图在我们的一台服务器上进行 post call,但一直收到 400 BAD_REQUEST
static void postUserToken()
{
final String url = "SERVER ADDRESS";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
MultiValueMap<String, String> requestBody= new LinkedMultiValueMap<>();
requestBody.add("userName", "TESTUSER");
requestBody.add("password", "TESTPASSWORD");
requestBody.add("auth", "secEnterprise");
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class );
System.out.println(response);
}
获取相同地址的请求有效,通过 Postman 发布请求适用于相同的正文和标题
我错过了什么?
编辑
邮递员的电话
POST /api/call/ HTTP/1.1
Host: SEREVERADDRESS:6405
Content-Type: application/json
Accept: application/json
User-Agent: PostmanRuntime/7.15.0
Cache-Control: no-cache
Postman-Token: token1,token2
Host: SEREVERADDRESS:6405
accept-encoding: gzip, deflate
content-length: 92
Connection: keep-alive
cache-control: no-cache
{
"password": "PASSWORD",
"auth": "secEnterprise",
"userName": "USER"
}
作为回应,我得到一个像这样的对象 {"token":"longtoken"}
解决方案
您正在使用一个MultiValueMap
但是您从邮递员发送的 json 看起来像一个简单的Map
.
这将产生{"key1":["val1"]}
而不是{"key1":"val1"}
推荐阅读
- java - WSO2 - 将 java 类作为项目的一部分包含的正确方法是什么
- javascript - 如何从 list.stdout.on 方法中获取数据
- webhooks - Podio Webhooks 响应未出现在 webhook.site 中
- apache-kafka - Kafka Streams 容错理解
- regex - 使用 Archivarix 搜索和替换删除所有文章图片
- python-3.x - 生成复杂网络的方法
- javascript - 如何对具有两个日期的对象数组进行排序?
- python - python中Flask api服务之间的数据持久化
- javascript - 如何比较两个对象数组,如果第二个数组项值这么说,则仅从第一个数组中删除项
- java - IntelliJ - Maven 添加外部 jar 文件但 java.lang.NoClassDefFoundError