RestEasyフレームワークのインターフェイスのみのオプションを使用したいのは、それがはるかにクリーンで機能するはずだからです。
しかし、POSTリクエスト内でパラメータを渡す際に問題が発生します。
私はこの例をドキュメントで見つけました:
@PUT
@Path("basic")
@Consumes("text/plain")
void putBasic(String body);
そして呼び出すには:
import org.jboss.resteasy.client.ProxyFactory;
// ...
// this initialization only needs to be done once per VM
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
SimpleClient client = ProxyFactory.create(SimpleClient.class, "http://localhost:8081");
client.putBasic("hello world");
私は次のことを試しました:
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Path("http://localhost:8080/app/resource")
String postBasic(String body);
そして呼び出されます:
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
RepoClient client = ProxyFactory.create(RepoClient.class, "");
client.postBasic("hi");
呼び出されたサーブレットのメソッドでパラメーターMapを出力(およびデバッグ)したときdoPost
、パラメーターは空でした。私のアプローチと文書化されたアプローチの違いを実際に見ることはできません(これはここからです:Resteasyインターフェースの例)。
要約すると、インターフェイス宣言とプロキシ実装のみを使用して、POSTパラメータを送信するにはどうすればよいですか?
解決策:予想どおりです...受信したパラメーターに応じて消費を宣言する必要があり、それは機能します...問題は、別のサーブレット内のサーブレットのPOSTメソッドを呼び出すことでした。