2016-09-29 3 views
0

Ich möchte Json Schlüsselwerte von HttpServletRequest bekommen.Java bekomme JSON-Daten von HttpServletRequest

Mein Java-Code wird unter

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) { 
     } 
    } 
} 

Beitrag JSON

{ 
    "email": "[email protected]", 
    "fname": "test01" 
} 

gegeben Ich erhalte unter JSON Ausgabe JSONObject jsonObject = HTTP.toJSONObject(jb.toString());

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

mit mir keinen Wert immer mit String email = jsonObject.getString("email");

Ich benutze Eclipse Mars 1 mit JAVA.

Antwort

-1

Wie kommst du an deinem JSON vorbei?

Wenn Sie es in als Content-Type: application/x-www-form-urlencoded sind vorbei, dann wird die oben nicht - sollten Sie so etwas wie

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

wo mydata ist der Name des HTML-Formularfeld verwenden.

Wenn Sie Content-Type: application/json verwenden, sollte der von Ihnen bereitgestellte Code funktionieren. Kannst du das bestätigen?

Es lohnt sich, den Inhalt von jb.toString() im Servlet auszugeben, damit Sie sehen können, was vor dem Versuch passiert ist, es als JSON zu parsen, wenn es bereits ungültig ist.

Wenn Sie curl verwenden können, testen Sie Ihren Code mit:

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

oder der Code wie in der letzten Referenz unten.

Referenzen:

Verwandte Themen