2016-03-27 12 views
0

私は同様の投稿を認識していますが、私はそれらをチェックしましたが、そのうちのどれも私を助けない可能性があります。RestTemplate POST - ハンドルレスポンス

3つのパラメータと基本認証を必要とするAPI(POSTタスクを管理する)にPOSTしたいと考えています。 郵便配達でそれは動作します。

{ 
    "title": "foo", 
    "description": "bar", 
    "completed": "false" 
} 

とし、基本認証(ユーザー名とパスワードを使用)を設定します。 APIは、このような応答を送信:私はAPIにPOSTを送信する場合

{ 
    "id": 0001 
} 

すべてが正常に動作しますが、今、私はJavaでそれを実装します。私はPOSTを送信しようとすると400の悪い要求を受け取ります:HttpClientErrorException:400 Bad Request(DefaultResponseErrorHandler)。 TaskとTaskResponseは、リクエストとレスポンス、および引数なし/完全引数のコンストラクタ、getterとsetterのようなフィールドを持つpojoです。

Task task = new Task("foo", "bar", false); 
     RestTemplate template = new RestTemplate(); 
     HttpEntity<Task> httpEntity = new HttpEntity<>(task, createHttpHeader()); 
     ResponseEntity<TaskResponse> result = template.exchange(uri, HttpMethod.POST, httpEntity, TaskResponse.class); 

private HttpHeaders createHttpHeader() { 
     HttpHeaders requestHeaders = new HttpHeaders(); 
     requestHeaders.setContentType(MediaType.APPLICATION_JSON); 
     requestHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); 
     requestHeaders.set("Authorization", createBasicAuthHeaderValue(username, password)); 
     return requestHeaders; 
    } 

    private String createBasicAuthHeaderValue(String username, String password) { 
     String credentials = username + ":" + password; 
     byte[] base64Credentials = Base64.encodeBase64(credentials.getBytes()); 
     return "Basic " + Arrays.toString(base64Credentials); 
    } 
+0

私は別のものを試しましたが、私は何も私のために働くものではありません。私の視点から見ると、問題はレスポンスにどのように反応するかです。レスポンスとして戻ってくるリクエストなどではないからです。それはまったく違うものです。この例では、作成されたタスクのIDです。レスポンスタイプとしてString.classを使用しようとしましたが、動作しません。 – pas2al

+0

クラスパスにJacksonを含めました。トレースモードを有効にして、要求本体に正しいJson表現があるかどうかを確認できます。 – Bhokal

+0

@Bhokalジャクソンとは何ですか?私は疑問に思っています...応答は単なるJSONなので。 String.classは私のために働くべきではありませんか? – pas2al

答えて

0

この実装は問題ありません。レスポンスタイプとしてStringを受け入れます。別の問題がありましたが、この文脈には関係ありません。

関連する問題