0

次のメソッドで POST リクエストを送信し、リクエストの送信時に HTTP 応答コードを返そうとしています。

問題のコード:

private ClientHttpRequestFactory getClientHttpRequestFactory() {
    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
    clientHttpRequestFactory.setConnectTimeout(timeout);
    return clientHttpRequestFactory;
}

public int sendRequest() {
    RestTemplate request = new RestTemplate(getClientHttpRequestFactory());
    String URL = buildURL();
    HttpHeaders headers = buildHeaders();
    validatePayload();
    HttpEntity<String> postRequest = new HttpEntity<String>(requestPayload, headers);
    return request.postForObject(URL, postRequest, ResponseEntity.class).getStatusCodeValue();
}

ClientHttpRequestFactory を生成しているので、タイムアウトを設定し、最終的に RestTemplate の postForObject を使用して POST を送信できます。ここでの問題は、POST 要求を送信するとすぐにプログラムが終了し (コマンド ラインで実行され)、応答コードを処理できないことです。これが postForObject の予想される動作であると言っているドキュメントをオンラインで見つけることができません。

ありがとう!

4

1 に答える 1

1

当面の問題は、postForObject() が null を返すことでした。後で問題を隠していた例外キャッチャーがありました。

代わりに、null を返さない postForEntity を使用し、次のブロックを使用して HTTP ステータス コードを取得できました。

ResponseEntity<String> re = request.postForEntity(URL, postRequest, String.class);
HttpStatus status = re.getStatusCode();
statusCode = status.value();
于 2016-10-07T18:40:44.280 に答える