2

jax-rs を使用して基本的な Web サービスを作成しています。次の JQuery を使用してアプリケーションをテストしています。GET パラメータを使用してパラメータに問題なくアクセスできますが、POST を使用すると失敗します。次の JQuery を使用して、「POST」から「GET」への切り替えのみをテストします。

$.ajax({
    type: "POST",
    url: "http://localhost:8080/MyWebService/",
    data: 'text=this is text',
    dataType: 'jsonp',
    success: function(data){

        console.log(data);

    },
    error: function(){alert('failure');}
});

Java エンドは次のようになります。get 部分に問題はありません。

@GET
public Response getWork(@QueryParam("callback") String callbackName, @QueryParam("text") String searchText,
        @Context HttpServletResponse response, @Context HttpServletRequest request) throws JsonGenerationException,
        JsonMappingException, IOException {
            System.out.println(searchText);
    return work(callbackName, searchText, response, request);
}

@POST
public Response postWork(@FormParam("callback") String callbackName, @FormParam("text") String searchText,
        @Context HttpServletResponse response, @Context HttpServletRequest request) throws JsonGenerationException,
        JsonMappingException, IOException {
    System.out.println(searchText);
    return work(callbackName, searchText, response, request);
}

GET を使用するとテキストが出力されますが、POST を使用すると null が出力されます。POST メソッドを使用してパラメータにアクセスするには何が必要ですか?

4

1 に答える 1

3

フォームデータを送信する場合は、どのタイプのコンテンツサーバーが消費するかを割り当てる必要があります。したがって、POSTメソッドに。で注釈を付ける必要があります@Consumes(MediaType.APPLICATION_FORM_URLENCODED)。つまり、POSTメソッドは次のようになります。

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
// rest of the code
于 2012-11-07T18:16:12.947 に答える