2012-04-19 21 views
0

RestEasyフレームワークのインターフェイスのみのオプションを使用したいと思っています。Resteasy FrameWork POSTが動作しない

しかし、私は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"); 

呼び出されたサーブレットのdoPostメソッドでパラメータMap(およびデバッグ)を出力すると、パラメータは空になりました。私のアプローチと文書化されたアプローチの違いはわかりません(こちらはResteasy interface exampleです)。

したがって、インターフェイスの宣言とプロキシの実装のみを使用して、POSTパラメータを送信するにはどうすればよいですか。

解決策:期待通りです...受け取ったパラメータに応じて消費量を宣言するだけで、動作します...問題は別のサーブレット内のサーブレットのPOSTメソッドを呼び出すことでした。

答えて

1

POSTの例では、@Pathに絶対URLを含めることはできません。設定に応じて、/appまたは/app/resourceと入力してください。

+0

ちょうど試みました...サーブレットは実際に呼び出されましたが、要求パラメータはありません –

+1

別の実行可能ファイルでサーバーを呼び出していますか? 'ProxyFactory'を* empty *のベースURLで作成することに注意してください。実際にはネットワーク経由で(ループバック経由で)サーバーに接続しますか? –

+0

サーブレット内でpostメソッドを呼び出すことが問題であるかどうかを確認します。 –

0

@Pathは相対URLでなければなりません。私はジャージーだけの経験があり、Resteasyには慣れていませんが、これは同じだと思います。

あなたのクラスは@Pathアノテーションを持ち、そのメソッドは@Pathアノテーションを持つことができます。

あなたはこのようなものだったのであれば:

@POST 
    @Path("Foo")  
    public class Foo() 
    { 
     @POST 
     @Path("Bar") 
     public String Bar() 
     { 
     ... 
     } 
    } 

をそうhttp://localhost:8080/Foo/BarへPOSTメソッドバーを実行します。

私のコメントは長くなっていますので、ここで取り上げます。

申し訳ありません申し訳ありません、あなたはdoubters postへのあなたのコメントは後まで表示されませんでした。あなたが使用しようとしている例は@FormParamですか?

は、私はRESTに新たなんだ、考えると、これまでのところ、すべての@POST方法は次のようになり@PathParamまたは@FormParamし、あなたの方法のいずれかを使用していたしました:

@Post 
    @Path("Foo/{foobar}") 
    public String Bar(@PathParam("foobar") String foobar) 
    { 
    } 

など

@Post 
    @Path("Foo") 
    public String Bar(@FormParam("foobar") String foobar) 
    { 
    } 
+0

問題は@Pathとは関係ありません...サーブレットのpostメソッドが呼び出されましたが、文字列パラメータは –

+0

申し訳ありませんが、私はdoubters postへのあなたのコメントがその後まで表示されませんでした。あなたが使用しようとしている例は@FormParamですか? – Corwin01

+0

nop ...私が投稿したリンクを見てください...それは簡単な投稿です –

関連する問題