1

POSTメソッド(フォームパラメーターを使用)を使用してRestfulWebサービスを使用しようとしたときにエラーが発生しました。

POSTメソッドを使用してRESTアプリケーションを使用したい。アクセスしたいリソースクラスを以下で見つけてください。

@Path("/user")

パブリッククラスユーザー{

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response get(@FormParam("username") String userName,
        @FormParam("userid") String userId  ){

}

アクセスにJesryClientを使用してみました。試したコードを以下に示します。以下に示すように、FormParamに値を追加してみました。

トレイル1

WebResource webResource = client.resource("baseURL/user");

String input = "userid:1001,username:demo1";
ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, input);

「サーバーでこの要求を実行できない内部エラー()が発生しました」というエラー応答が返されます。FormParamに値を正しく追加していないと思います。

試験2

また、以下のコードを使用してフォームパラメータを追加してみました

MultivaluedMap formData = new MultivaluedMapImpl();
    formData.add("userid", "1001");
    formData.add("username", "demo1");
    ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, formData);

これも同じエラーになりました。

試験3

Form f = new Form();
    f.add("userid", "1001D");
    f.add("username", "1001D");

    ClientResponse response = webResource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, f);

これも同じエラーになりました。どんな助けでも大歓迎です。

4

2 に答える 2

1

エラーは「サーバーに内部エラーが発生しました」と表示されるため、サーバー (ログ) を調べて何が問題なのかを確認する必要があります。確かに、3 番目のクライアントは、定義したサービスに到達するのに問題ないように見えます (文字列「baseURL」の代わりに実際のものを使用していると仮定します)。

サービスにアクセスするための HTML ページを作成することで、サーバーがクライアントとは別に動作していることを簡単にテストできます。enctype="application/x-www-form-urlencoded" を使用して HTML フォームを作成し、フォーム パラメータ userid および username を使用してサービス エンドポイント (「baseURL/user」と呼んでいるもの) に投稿します。ブラウザーで HTML フォームを表示して送信ボタンを押すと、サーバーが呼び出されます。同じエラーが発生した場合は、クライアント コードとは関係がないことを確認できます。

于 2012-05-25T03:26:51.680 に答える
0

http://yogeshmprajapati.blogspot.in/2011/12/login-to-fb-from-java.htmlがお役に立てば幸いです

于 2012-06-01T12:35:04.510 に答える