gpt4 book ai didi

java - 带有标题 : webservice can't find my header parameters 的 Spring RestTemplate postForObject

转载 作者:IT老高 更新时间:2023-10-28 13:45:22 27 4
gpt4 key购买 nike

我正在为 RestTemplate 苦苦挣扎。我需要将一些身份验证信息发布到休息网络服务。我可以发送请求并得到响应。但是根据响应,我的 header 参数没有通过。 (使用 SOAPUI 发送相同的请求可以正常工作)

这是我的代码:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.add("companyId", companyId);
headers.add("password", password);

HttpEntity<String> request = new HttpEntity<String>(headers);

RestTemplate restTemplate = new RestTemplate();

List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);

LoginResponse response = (LoginResponse)restTemplate.postForObject(url, request, LoginResponse.class);

谁能告诉我我的 HttpEntity 或 HttpHeader 出了什么问题?

谢谢。

已解决:

好的,终于搞定了。

MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("companyId", companyId);
map.add("password", password);

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);

List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new MappingJacksonHttpMessageConverter());
messageConverters.add(new FormHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);

LoginResponse response = (LoginResponse) restTemplate.postForObject(url, request, LoginResponse.class);

因为我也很难回答,也许它对其他人有用:

@JsonIgnoreProperties(ignoreUnknown = true)
public class ItcLoginResponse {

public String loginToken;

@JsonProperty("token")
public String getLoginToken() {
return loginToken;
}

public void setLoginToken(String loginToken) {
this.loginToken = loginToken;
}
}

最佳答案

您正在设置一个 header ,表明您正在发布一个表单 (APPLICATION_FORM_URLENCODED),但随后将 companyId 和密码设置为 HTTP header 。

我怀疑您希望这些字段出现在您的请求正文中。

您也在创建 HttpEntity<String>这表明您将发布一个包含字符串的请求正文,但您提供的是 header 但没有字符串。

如果这不能帮助您解决问题,也许您可​​以解释一下请求应该是什么样子。

关于java - 带有标题 : webservice can't find my header parameters 的 Spring RestTemplate postForObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11579621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com