0

これはとても簡単に思えますが、なぜ機能しないのかわかりません。

私はJerseyサービスを定義しています:

@POST
public SomeObject createSomeObject(
    @QueryParam("firstParam") String firstParam,
    @QueryParam("secondParam") String secondParam)
{
    // Does stuff, returns the object.
}

ここで、単純な を実行すると、curl正常に動作します。

curl -X POST "http://localhost:8080/path/to/service?firstParam=Bleh&secondParam=Blah

ただし、nullJava での firstParam と secondParam の結果は次のとおりです。

$.ajax({
    url: '/path/to/service',
    type: 'POST',
    data: {
        firstParam: 'Bleh',
        secondParam: 'Blah'
    },
    success: doStuff,
    error: eek
});

これはばかばかしいほど簡単に思えます。私は彼らがまったく同じように振る舞うべきだと感じています。私は何が欠けていますか?私が試したこと(ただし、必要ではないようです):

  • 通話に追加contentType: 'application/x-www-form-urlencoded'ajaxます。
  • @Consumes(MediaType.APPLICATION_FORM_URLENCODED)ジャージー サービスに追加します。
  • でデータオブジェクトをラップしますJSON.stringify(私はそれをする必要があることを知っていcontentType: 'json'ますが、ここではする必要はありません.

URL パラメーターを自分でコーディングして URL に詰め込むことができることはわかっていますが、それは洗練されていないように思われるので、そうする必要はありません。

4

2 に答える 2

0
$.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded;charset=utf-8",
        url: url,
        data: data,
        dataType: 'json',
        timeout: 3000,
        // jsonpCallback:"foo",
        success:function(response){
            console.log(response);              
        },
        error: function(){
            console.log("error!");
        }
    });

上記は jquery リクエストであり、@futuretelematics が contentType: "application/x-www-form-urlencoded;charset=utf-8" を必要とすると言ったように。そして、Jersey サービスに @Consumes( {MediaType.APPLICATION_FORM_URLENCODED}) を追加します。

@POST
@Produces({ MediaType.APPLICATION_JSON})
@Consumes( {MediaType.APPLICATION_FORM_URLENCODED})
public String execute(@FormParam("stoYardName") String data,
                       @FormParam("domTree") String domTree
                                    ) {
            .........

};

于 2013-08-05T05:57:22.677 に答える