30

RestTemplateで苦労しています。いくつかの認証情報を残りのWebサービスにPOSTする必要があります。リクエストを送信して応答を受け取ることができます。しかし、応答によると、私のヘッダーパラメータは通過していません。(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;
    }
}
4

1 に答える 1

6

フォーム (APPLICATION_FORM_URLENCODED) を投稿していることを示すヘッダーを設定していますが、companyId と password を HTTP ヘッダーとして設定しています。

これらのフィールドをリクエストの本文に含めたいと思われます。

HttpEntity<String>また、文字列を含むリクエスト本文を投稿することを示すも作成していますが、ヘッダーは提供していますが、文字列は提供していません。

それでも解決しない場合は、リクエストがどのように見えるべきかを説明できるかもしれません。

于 2012-07-20T13:10:50.610 に答える