理想的には、JAX-RS のようなもの (呼び出したいサービスを記述するために注釈を使用) を探していますが、(JAX-RS ではなく) 他のテクノロジを使用して実装された REST サービスを呼び出すことができます。なにか提案を?
5 に答える
JAX-RS (JSR311) はクライアント API を定義していませんが、Jersey、RESTeasy、Apache CXFなど、ほとんどの JAX-RS 実装にはクライアント API があります。Restlet フレームワークには、クライアント サポートと、別のHTTP クライアント拡張機能もあります。
これらは REST に特化したライブラリ/フレームワークであるため、これらを調べることをお勧めします。
あなたは、HttpClient よりも「より高いレベルの何かを期待している」とコメントに書きました。Restletは完璧なようですね。RESTful Web アプリケーションを実装および使用するための高レベル API を提供し、低レベル実装用のプラグアンドプレイ アダプターを備えています。
たとえば、Restlet 1.1 を使用して Web フォームをリソースに POST するには:
Client client = new Client(Protocol.HTTP);
Form form = new Form();
form.add("foo", "bar");
form.add("abc", "123");
Response response = client.post("http://host/path/to/resource", form.getWebRepresentation())
if (response.getStatus().isError()) {
// deal with the error
return;
}
if (response.isEntityAvailable()) {
System.out.println(response.getEntity().getText());
}
リクエストにさらにオプションを設定する必要がある場合は、Request オブジェクトを使用できます。
Form form = new Form();
form.add("foo", "bar");
form.add("abc", "123");
Request request = new Request(Method.POST, "http://host/path/to/resource");
request.setEntity(form.getWebRepresentation());
request.setReferrerRef("http://host/path/to/referrer");
Response response = client.handle(request);
チッ!
WADL プロジェクトをご覧になることをお勧めします。WADL は REST に対応し、WSDLは SOAP に対応します。
まず、WADL を使用して REST インターフェースを定義する必要があります。次に、wadl2java ツールを実行して、REST 呼び出し用のクライアント スタブを生成できます。
Web サービスの WADL を取得したら、サーバー側のスタブの生成、ドキュメントの生成など、他のことも行うツールを実装できます。
ほとんどの場合、Apache のHttpClient ( http://hc.apache.org/httpcomponents-client-ga/を参照)。
Gandalf と Darrel Miller が言ったように、HttpClient.
HTTP パラメータから XML を構築する必要はありません。XML は、2 つの別個のシステム間のインターフェイスにすぎません。HttpClient を使用すると、Java で String 値を自由に使用できるようになります。そこから XML に戻る必要はありません。
この時点で別のシステムに送信するために XML に戻る場合は、別のシステムと通信する前に、値を HTTP パラメーターからドメイン/アプリ ロジックに戻すことを検討する必要があります。これは、システム間通信からアプリケーション ロジックを適切に分離するために必要です。