2017-05-26 29 views
0

Spring RESTTemplateを使用してオブジェクトをWebサーバーにポストし、1つを取得したいと考えています。spring restTemplateを使用したPOST REST APIの認証

ここではコードの一部:

String authStringEncoded = 
       Base64.getEncoder().encodeToString 
        ("582f3e4a9e933168ea1048e6:98c6f2736c5f02279d767ce7ddfe7e5d".getBytes("utf-8")); 


     HttpHeaders headers = new HttpHeaders(); 
     headers.add("Authorization", "Basic " + authStringEncoded); 


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

     RestTemplate rt = new RestTemplate(); 
     rt.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
     rt.getMessageConverters().add(new StringHttpMessageConverter()); 
     String uri = new String(REGISTERING_NEW_DEVICES.replace("{devicetype-id}", KIT_TYPE_ID)); 


     TdkDevice deviceC3DF86B = new TdkDevice(); 
     deviceC3DF86B.setId("C3DF86B"); 
     deviceC3DF86B.setPal("44CFFFC9D5F8E8B2F36"); 

     DeviceRegistration deviceRegistration = new DeviceRegistration(); 
     deviceRegistration.getIds().add(deviceC3DF86B); 

     rt.postForObject(uri, HttpMethod.POST, request, deviceRegistration, DeviceRegistration.class); 

しかし、私はコンパイルエラーを得た:

The method postForObject(String, Object, Class<T>, Object...) in the type RestTemplate is not applicable for the arguments (String, HttpMethod, HttpEntity<String>, DeviceRegistration, 
Class<DeviceRegistration>) 

答えて

1

あなたのサービスコールは、以下のようにする必要があります:

rt.postForObject(uri, request, DeviceRegistration.class); 

春によるとRestTemplate api、postForObjectメソッドのパラメータは、次のとおりです。

パラメータ:

  • URL - URL
  • 要求 - POSTされるオブジェクト
  • responseType(nullの場合がある) - 戻り値の型
  • uriVariables - 変数テンプレートを展開し

API Reference

関連する問題