簡體   English   中英

將JSON發布到Jersey服務

[英]POST JSON to Jersey Service

我正在嘗試將一些json數據發布到使用Jersey框架實現的REST Web服務中。 我不使用JAXB或jquery,而僅使用javascript。
我驗證了形成的json是正確的,但是盡管設置了內容類型“ application / json”,但在服務器上卻被接收為“ application / x-www-form-urlencoded”。
這是我的代碼:

<html>
<head>
<script type="text/javascript">
    function DisplayFormValues()
    {
        var str = {};
        var elem = document.getElementById('frmMain').elements;

        //alert(elem.length);
        for(var i = 0; i < elem.length-1; i++)
        {
            str[elem[i].name] = elem[i].value;

        }
        document.getElementById('lblValues').innerHTML = str;

        var json = JSON.stringify(str);

        // construct an HTTP request
        var xhr = new XMLHttpRequest();
        xhr.open(document.getElementById('frmMain').method,
                document.getElementById('frmMain').action);
        xhr.setRequestHeader("Content-type", "application/json");
        xhr.setRequestHeader("Content-Length",json.length);
        xhr.setRequestHeader('Accept', 'application/json');


        //alert(json);
        // send the collected data as JSON
        xhr.send(json);


        xhr.onloadend = function() {
            // done
        }
    }
</script>
</head>
<body>
    <form id="frmMain" name="frmMain" action="/JerseyTest/rest/postUser"
        method="post">

        <input name="firstName" value="harry" /> <input name="lastName"
            value="tester" /> <input name="toEmail" value="testtest@test.com" />
        <br /> <input type="submit" value="Test"
            onclick="DisplayFormValues();" />
    </form>
    <hr />
    <div id="lblValues"></div>
</body>
</html>  

在服務器端:

package com.example.jersey.test;


import javax.ws.rs.*;

@Path("/postUser")
public class JsonTest {

    @POST
    @Consumes("application/json")
    @Produces(MediaType.TEXT_PLAIN)
    public String pingPong(String json) {

        return "Answer is "+ json;
    }
}  

我是Web開發的新手,不確定上面的代碼中缺少什么。

我正在回答我自己的問題,以供以后訪問的人使用。 上面的代碼是正確的,並且工作正常,除了該網址被兩次擊中。 第一次,對於提交按鈕的默認操作,然后按照XMLHttpRequest的腳本執行。
在檢查Httpfox中的標頭后發現了這一錯誤,標頭顯示錯誤為NS_BINDING_ABORTED
將輸入類型從提交更改為按鈕后,一切正常。

暫無
暫無

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

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