[英]Java get JSON data from HttpServletRequest
我想從HttpServletRequest獲取Json鍵值。
我的Java代碼如下
import java.io.BufferedReader;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.HTTP;
import org.json.JSONException;
import org.json.JSONObject;
@WebServlet("/Service")
public class Service extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, JSONException {
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null) {
jb.append(line);
}
} catch (Exception e) {
}
try {
JSONObject jsonObject = HTTP.toJSONObject(jb.toString());
String email = jsonObject.getString("email");
} catch (Exception e) {
}
}
}
發布JSON
{
"email": "test@xyz.com",
"fname": "test01"
}
我正在使用JSONObject jsonObject = HTTP.toJSONObject(jb.toString());
低於JSON輸出JSONObject jsonObject = HTTP.toJSONObject(jb.toString());
{"\"test@xyz.com\",\t\"fname\"":"\"test01\"}","Request-URI":"email","Method":"{","HTTP-Version":":"}
我沒有使用String email = jsonObject.getString("email");
獲得任何值String email = jsonObject.getString("email");
我正在使用JAVA使用Eclipse Mars 1。
您如何傳遞json?
如果您以Content-Type: application/x-www-form-urlencoded
傳遞它,則以上內容將無法正常工作-您應使用類似
JSONObject jObj = new JSONObject(request.getParameter("mydata"));
其中mydata
是HTML表單字段的名稱。
如果您使用Content-Type: application/json
,則您提供的代碼應該可以使用。 你能確認嗎?
無論如何,在servlet中輸出jb.toString()
的內容都是jb.toString()
的,因此,如果它已經無效,則可以在嘗試將其解析為JSON之前先查看其中的內容。
如果可以使用curl,請使用以下命令測試代碼:
curl http://localhost:8080/ -H "Content-Type: application/json" -X POST -d '{"email": "test@xyz.com","fname": "test01"}'
或以下最后參考中的代碼。
參考文獻:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.