亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Java Servlet 中發送 JSON/GSON 請求會導致“錯誤請求”

在 Java Servlet 中發送 JSON/GSON 請求會導致“錯誤請求”

紅顏莎娜 2022-04-28 17:08:16
我有想要獲得有效響應的 servlet 代碼。這是請求的原始布局 {  "function": "Check",  "teamId": "<teamId>",  "teamKey": "<teamKey>",  "requestId": "<request-id>",  "firstName": "<FirstName>",  "lastName": "<LastName>",  "ticketNumber": "<ticket-num>"}我在 Intellij 的 servlet 中有這個。import com.google.gson.*;import com.google.*;import org.apache.*;import org.apache.http.*;@WebServlet(name = "Logincheck", urlPatterns = {"/Logincheck"})public class Servlet extends HttpServlet {String teamID = "IC106-2";String teamKey = "1b3741ccf6d9ec5245055370125d901e";String url="http://fys.securidoc.nl:11111/Ticket";int Min = 1;int Max = 100;int REQ_ID =  Min + (int)(Math.random() *((Max - Min)+1));    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//index.html form user input     String fname = request.getParameter("firstName");    String lastName = request.getParameter("lname");    String ticketNummer = request.getParameter("ticketnr");    JsonParser parser = new JsonParser();    URL object=new URL(url);    String ticketCheck = "{\"function:\"Check\",\"teamId\":\"IC106-2\",\"teamKey\":\"1b3741ccf6d9ec5245055370125d901e\",\"requestId\":\""+REQ_ID+"\",\"firstName\":\""+fname+"\",\"lastName\":\""+lastName+"\",\"ticketNumber\":\""+ticketNummer+"\"}";    }}現在,當我點擊運行時,它會打開我的 index.html,當我單擊登錄按鈕到 /Logincheck 時,它會響應(在 intellij 內):Bad RequestTeamkey 和 TeamID 100% 正確,但我可能忽略了與 Json 相關的一些事情。一般來說,我對 Json 和 servlet 的經驗很少。就像我制作硬編碼的登錄和票證憑據一樣,還是用戶的輸入正確已經正確?我應該期待這樣的回應:{  "ticketStatus": "<ticket-status>",  "requestId": "<request-id>",  "result": "<result-code>",  "resultText": "<result-text>"}
查看完整描述

2 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

您應該將 json 數據寫入請求正文。為此,您可以使用OutputStreamWriter類寫入如下輸出流HttpURLConnection:


String ticketCheck = "{ \"function\":\"Check\",\"teamId\":IC106-2,\"teamKey\":1b3741ccf6d9ec5245055370125d901e,\"requestId\":1,\"firstName\":\"" + fname + "\" ,\"lastName\":\""+lastName+"\",\"ticketNumber\":\"\"" + ticketnummer + "\"}";


HttpURLConnection con = (HttpURLConnection) object.openConnection();

con.setDoOutput(true);

con.setDoInput(true);

con.setRequestProperty("Content-Type", "application/json");

con.setRequestProperty("Accept", "application/json");

con.setRequestMethod("POST");


OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());

writer.write(ticketCheck);

//this line closes the outputstream and actually makes the http request is sent

writer.flush();


查看完整回答
反對 回復 2022-04-28
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

解決了。簡單的報價錯字。“錯誤請求”意味著語法錯誤,我忘記在函數旁邊添加 \" 。

    String ticketCheck = "{\"function\":\"Check\",\"teamId\":\"IC106-2\",\"teamKey\":\"1b3741ccf6d9ec5245055370125d901e\",\"requestId\":\""+REQ_ID+"\",\"firstName\":\""+fname+"\",\"lastName\":\""+lastName+"\",\"ticketNumber\":\""+ticketNummer+"\"}";

上面正確的json


查看完整回答
反對 回復 2022-04-28
  • 2 回答
  • 0 關注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號