RestTemplateに苦労しています。 POST残りのWebサービスに認証情報を送信する必要があります。リクエストを送信してレスポンスを取得できます。 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の何が問題なのか教えてもらえますか?
ありがとうございました。
解決しよう:
OK、ついに機能しました。
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;
}
}
フォームを投稿していることを示すヘッダー(APPLICATION_FORM_URLENCODED)を設定していますが、HTTPヘッダーとしてcompanyIdとパスワードを設定しています。
これらのフィールドをリクエストの本文に含める必要があると思います。
また、文字列を含むリクエスト本文を投稿することを示すHttpEntity<String>
を作成していますが、文字列ではなくヘッダーを提供しています。
それでも解決しない場合は、リクエストがどのように見えるかを説明できます。