ホームページ >Java >&#&チュートリアル >POSTリクエストからJAX-RSクライアントの応答ボディを読む
このセクションでは、JAX-RSクライアント内のPOSTリクエストから応答本体を読み取る方法について詳しく説明しています。 コアメソッドには、ClientResponse
メソッドによって返されたinvoke()
オブジェクトを使用することが含まれます。 このオブジェクトは、応答ステータスコードとエンティティ(応答本体)へのアクセスを提供します。 特定のアプローチは、応答本体のコンテンツタイプに依存します。 一般的なJSON応答については、JacksonやGSONなどのJSON処理ライブラリを使用する必要があります。WebTarget
ジャクソンを使用して(前の例を示すように)、
<code class="java">import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import com.fasterxml.jackson.databind.ObjectMapper; //Jackson library public class ReadPostResponseBody { public static void main(String[] args) { Client client = ClientBuilder.newClient(); WebTarget target = client.target("http://your-api-endpoint.com/your-resource"); // Create a sample request entity (replace with your actual data) String requestBody = "{\"key1\":\"value1\", \"key2\":\"value2\"}"; Response response = target.request(MediaType.APPLICATION_JSON).post(Entity.json(requestBody)); if (response.getStatus() == 200) { //Check for successful response try { ObjectMapper objectMapper = new ObjectMapper(); YourResponseObject responseObject = objectMapper.readValue(response.readEntity(String.class), YourResponseObject.class); //Process responseObject System.out.println("Response: " + responseObject); } catch (Exception e) { e.printStackTrace(); } } else { System.err.println("Request failed with status code: " + response.getStatus()); } response.close(); client.close(); } //Define your response object structure public static class YourResponseObject { // Your class fields here } }</code>
はJSON文字列をJavaオブジェクトに直接マッピングし、解析プロセスを非常に効率的にします。 Javaクラスが、シームレスな敏aserializationのJSON応答の構造を正確に反映していることを確認します。 Javaクラスのような注釈を使用して、JSONキーをJavaフィールドに正確にマッピングすることを検討してください。 サーバーによって返されるHTTPステータスコードを常に確認してください。 2xxステータスコードは成功を示しますが、他のコードはエラーを意味します。 コードはこれらを異なって処理する必要があります。 たとえば、"http://your-api-endpoint.com/your-resource"
YourResponseObject
最初のセクションの例は、200 OKステータスコードの基本チェックを示しています。 これを展開して、APIの仕様に従ってより広い範囲のステータスコードを処理する必要があります。 異なるステータスコードを優雅に管理するには、objectMapper.readValue()
ステートメントまたは一連の@JsonProperty
ステートメントを使用してください。 次のような潜在的な問題を処理するために、コードを
IOException
:ネットワークの問題、接続タイムアウト。JSONException
:json parsing中のエラー(これをスローするライブラリを使用する場合)ProcessingException
:特定のエラーシナリオのために定義する可能性のあるカスタム例外。エラー処理により、予期しないエラーのためにアプリケーションがクラッシュしないようにし、さまざまな障害シナリオを優雅に処理できます。 ユーザーに有益なエラーメッセージを提供するか、デバッグの詳細情報を記録することを忘れないでください。以上がPOSTリクエストからJAX-RSクライアントの応答ボディを読むの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。