簡體   English   中英

如何使帶有JSON數據的post ajax調用到Jersey休息服務?

[英]How to make post ajax call with JSON data to Jersey rest service?

我已經通過這個鏈接 但這並沒有幫助我。

我正在使用jersey lib v1.17.1。 我的球衣休息服務:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/post1")
public ResponseBean post1(@QueryParam("param1")String param1)
{
    return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true);
}

網址是: /test/post1

我的ajax電話:

var d = {"param1":"just a dummy data"};
    $.ajax({
        type : "POST",
        url : "http://localhost:7070/scl/rs/test/post1",
        contentType :"application/json; charSet=UTF-8",
        data : d,
        dataType : "json"
    })
    .done(function(data){
        console.log(data);
    })
    .fail(function(data){
        console.log(data);
    });

它影響了我的休息服務,但作為param1我總是得到空值。 另一種解決方案是添加帶有@XMLRootElement JavaBean, @XMLRootElement將Java對象編組/解組為json,反之亦然,但是我不想使用它。
是否有任何方法可以發布數據並使用@QueryParam類的適當注釋接收數據? 請幫忙

您的服務器端代碼應如下所示:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/post1")
public ResponseBean post1(Data param1)
{
    return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true);
}

其中, Data是(POJO)類,其@XmlRootElement批注,並且對應於客戶端將發送的JSON數據(即,具有帶有getter和setter的param1字段)。 JAX-RS實現會將POST的正文解組為Data的實例。

@QueryParam批注用於在(通常) GET請求中檢索查詢參數。 查詢參數是問號( ? )之后的參數。 例如: @QueryParam("start") String start處理以下請求時, @QueryParam("start") String start將映射為1GET http://foo.com/bar?start=1 ,但這不是您正在執行的操作案例,AFAICS。

You can simply take Post dat as a string and then you can parse it using JSONObject.
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/post1")
    public Response postStrMsg(String msg) {
        String output = "POST:Jersey say : " + msg;
        return Response.status(200).entity(output).build();
    }

@XMLRootElement是實現此目的的方法,因為必須先對json進行封送處理,然后才能使用其任何元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM