Cosminexus V9 アプリケーションサーバ Webサービス開発ガイド
ここでは,RESTful Webサービス用クライアントAPIの基本的なユースケースについて説明します。Webリソースを呼び出すには,次の三つの方法があります。
それぞれのパターンについて次に説明します。
Java型を指定してHTTPリクエストおよびHTTPレスポンスを送受信する場合のユースケースを次の図に示します。
図11-1 Java型を指定してHTTPリクエストおよびHTTPレスポンスを送受信する場合のユースケース
図11-1に対応したコーディング例は次のとおりです。
| Client client = Client.create(); Map<String, Object> properties = client.getProperties(); properties.put(ClientConfig.PROPERTY_READ_TIMEOUT, 10000); WebResource proxy = client.resource( "http://example.org/helloworld" ); WebResource.Builder builder = proxy.accept( MediaType.APPLICATION_JSON_TYPE ); builder = builder.type( MediaType.TEXT_PLAIN_TYPE ); String response = builder.post( String.class, "Some Request" ); |
この例での処理の流れについて説明します。
受信するHTTPレスポンスは汎用型,つまりClientResponseオブジェクトでも取得できます。ClientResponseオブジェクトで取得した場合,ユーザは受信したHTTPレスポンスの各種情報(HTTPヘッダ,エンティティボディ,およびステータスコード)を取得できます。
エンティティボディは,getEntity()メソッドを使用することで,Java型を指定して取得できます。ClientResponseクラスでサポートしているメソッドについては「25.1 クライアントAPIのインタフェースおよびクラスのサポート範囲」を参照してください。
受信するHTTPレスポンスをClientResponseオブジェクトで取得する方法は次のとおりです。
WebResourceオブジェクトを使用してHTTPリクエストを生成する場合は,HTTPレスポンスのJava型を指定するパラメタにClientResponse.classを指定してください。「11.4.1(1) Java型を指定してHTTPリクエストおよびHTTPレスポンスを送受信する」で示したコーディング例では,String.classの代わりにClientResponse.classを指定してください。
Clientクラスを使用してHTTPリクエストを直接送信する場合は,HTTPレスポンスは常にClientResponseです。Clientクラスの詳細については,「11.4.1(3) 汎用型でHTTPリクエストおよびHTTPレスポンスを送受信する」を参照してください。
汎用型(ClientRequestおよびClientResponse)でHTTPリクエストおよびHTTPレスポンスを送受信する場合のユースケースを次の図に示します。
図11-2 汎用型でHTTPリクエストおよびHTTPレスポンスを送受信する場合のユースケース
上記の図に対応したコーディング例は次のとおりです。
Client client = Client.create();
Map<String, Object> properties = client.getProperties();
properties.put(ClientConfig.PROPERTY_READ_TIMEOUT, 10000);
ClientRequest ro;
ClientRequest.Builder builder = ClientRequest.create();
builder.accept( MediaType.APPLICATION_JSON_TYPE );
builder.type( MediaType.TEXT_PLAIN_TYPE );
builder.entity("Some Request");
ro = builder.build(new URI("http://example.org/helloworld"), "POST");
ClientResponse clientResponse = client.handle(ro);
//The actual response in the form of String
String response = clientResponse.getEntity(String.class);
|
この例での処理の流れについて説明します。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.