首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POST x-www-form-urlencoded

POST x-www-form-urlencoded
EN

Stack Overflow用户
提问于 2017-06-04 19:43:07
回答 1查看 5.8K关注 0票数 0

我一直在阅读the following,并试图使用RestTemplate发送带有Spring的POST请求。

代码语言:javascript
复制
HttpHeaders headers = new HttpHeaders();
headers.add("content-type", "application/x-www-form-urlencoded");

final String body = "clipmessage={ bridgeId: \"" + user.getBridgeId() + "\", clipCommand: { url: \"" + setLightState("3") + "\", method: \"PUT\", body: { \"on\": " + state.isOn() + " } } }";
final String url = API_ADDRESS + user.getAccessToken();

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

restTemplate.postForEntity(url, entity, String.class);

如果我记录的URL和正文,并发送完全相同的邮递员,它成功。但是,当我从Spring应用程序发送它时,就不会了。

我猜那个特殊的身体必须以某种我不知道的特殊方式被送去?

有谁知道接下来该尝试什么吗?

更新1: --我按建议尝试了MultiValueMap,但也没有成功。

代码语言:javascript
复制
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();

final String body = "{ bridgeId: \"" + user.getBridgeId() + "\", clipCommand: { url: \"" + setLightState("3") + "\", method: \"PUT\", body: { \"on\": " + state.isOn() + " } } }";

map.add("clipmessage", body);

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

回答 1

Stack Overflow用户

发布于 2022-08-08 05:19:37

我也有同样的情况。在使用以下代码后解决:

代码语言:javascript
复制
  restTemplate = new RestTemplate();

    List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));
    FormHttpMessageConverter formMessageConverter = new FormHttpMessageConverter();
    messageConverters.add(formMessageConverter);
    messageConverters.add(converter);
    restTemplate.setMessageConverters(messageConverters);

参数和头件

代码语言:javascript
复制
...
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
        parameters.add("signature", "signature");
        //other parameters
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(parameters, headers);
ResponseEntity<ResponseMessage> responseEntity = restTemplate.postForEntity(url,  requestEntity, ResponseMessage.class);
ResponseMessage respMsg =responseEntity.getBody();
logMsg.append(",HTTP STATUS=").append(responseEntity.getStatusCode()).append(", RES:").append(marshal(respMsg));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44358102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档