2016-09-29 10 views
0

Jsonキーの値をHttpServletRequestから取得します。Javaは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": "[email protected]", 
    "fname": "test01" 
} 

私はString email = jsonObject.getString("email");

を使用して任意の値を取得していない午前 JSONObject jsonObject = HTTP.toJSONObject(jb.toString());

{"\"[email protected]\",\t\"fname\"":"\"test01\"}","Request-URI":"email","Method":"{","HTTP-Version":":"} 

を使用してJSON出力の下に取得していますが与えられます

私はJAVAを使用してEclipse Mars 1を使用しています。

答えて

-1

どのようにあなたのjsonを渡していますか?

あなたはContent-Type: application/x-www-form-urlencodedとしてそれを渡している場合は、上記は動作しません - mydataは、HTMLフォームフィールドの名前です、あなたは

JSONObject jObj = new JSONObject(request.getParameter("mydata")); 

のようなものを使用する必要があります。

Content-Type: application/jsonを使用する場合は、指定したコードが有効です。それを確認できますか?

jb.toString()の内容をサーブレットに出力する価値があります。すでに無効な場合は、JSONとして解析する前に何が入ってきたのかを確認することができます。

あなたはカールを使用することができた場合は、を使用してコードをテスト:

curl http://localhost:8080/ -H "Content-Type: application/json" -X POST -d '{"email": "[email protected]","fname": "test01"}' 

か、以下の最後の参照のようにコード。

参考文献:

関連する問題