5

免責事項:私はこの質問への回答を徹底的に検索しました。はい、この他の質問を見つけました:https://stackoverflow.com/questions/10315728/how-to-send-parameters-as-formparam-to-webservice . しかし、第一に、その質問はJavascriptについて尋ねていますが、私はJavaについて尋ねています.第二に、とにかく答えがありません. それでは質問に...

RESTful サービスを使用すると、変数の名前と値のペアを URL に追加し、それを使用してプログラム内からサーバーにアクセスできるため、 @QueryParams をサービスに渡すの@GETは非常に簡単です。@FormParamsでもこれを行う方法はありますか?

たとえば、次の RESTful サービスがあるとします。

@POST
@Produces("application/xml")
@Path("/processInfo")
public String processInfo(@FormParam("userId") String userId,
                          @FormParam("deviceId") String deviceId,
                          @FormParam("comments") String comments) {
    /*
     * Process stuff and return
     */
}

...そして、次のように、プログラムの別の場所に別のメソッドもあるとしましょう:

public void updateValues(String comments) {

    String userId = getUserId();
    String deviceId = getDeviceId();

    /*
     * Send the information to the /processInfo service
     */

}

2番目の方法でコメントアウトされたアクションを実行するにはどうすればよいですか?

注:これらのメソッドは、同じクラスまたはパッケージに含まれていないと想定してください。また、メソッドを実行しているマシンとはのサーバーで RESTful サービスがホストされていると仮定します。そのため、メソッドにアクセスして値を RESTful な方法で渡す必要があります。

ご協力ありがとうございました!

4

1 に答える 1

6

@FormParam を使用すると、フォーム パラメータを変数にバインドできます。サンプルはこちらにあります

次に、Java メソッド コードから内部的にレスト サービスを呼び出すには、jersey クライアントを使用する必要があります。サンプル コードは、ここにあります。

次のように、jersey クライアント フォームを使用してフォーム パラメータを渡すことができます。

フォームを作成

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(UriBuilder.fromUri("http://localhost:8080/api").build());

Form f = new Form();    
f.add("userId", "foo");    
f.add("deviceId", "bar");    
f.add("comments", "Device");  

Restful メソッドに渡します。

service.path("processInfo").accept(MediaType.APPLICATION_XML).post(String.class,f);

参照

于 2012-09-07T10:20:27.860 に答える