2013-07-19 76 views
4

我必須閱讀客戶端使用Spark(Java框架)發送的一些數據。如何讀取客戶端使用Spark發送的數據?

這是客戶的發佈請求的代碼。我正在使用jQuery。

$.post("/insertElement", 
{item:item.value, value: value.value, dimension: dimension.value }); 

服務器的代碼:

post(new Route("/insertElement") { 
     @Override 
     public Object handle(Request request, Response response) { 
      String item = (String) request.attribute("item"); 
      String value = (String) request.attribute("value"); 
      String dimension = (String) request.attribute("dimension"); 
      Element e = new Element(item, value, dimension); 
      ElementDAO edao = new ElementDAO(); 
      edao.insert(e); 
      JSONObject json = JSONObject.fromObject(e); 
      return json; 
     } 
    }); 

我使用的火花,所以我只需要定義的路由。 我想在數據庫中存儲客戶端發送的數據,但所有屬性都爲空。

我認爲這種方式是不正確的。我怎樣才能讀取發送的數據?

回答

7

他們的方式發送數據,使用HTTP POST,你張貼JSON作爲請求,還不如要求屬性。這意味着您不應該使用request.attribute("item")和其他,而是將請求主體解析爲Java對象。您可以使用該對象創建element並使用DAO存儲它。

1

嘗試使用request.queryParams(「item」)等。

3

你需要這樣的事情:

post(new Route("/insertElement") { 
    @Override 
    public Object handle(Request request, Response response) { 

     String body = request.body(); 
     Element element = fromJson(body, Element.class); 
     ElementDAO edao = new ElementDAO(); 
     edao.insert(e); 
     JSONObject json = JSONObject.fromObject(e); 
     return json; 
    } 
}); 


public class Element { 

    private String item; 
    private String value; 
    private String dimension; 

    //constructor, getters and setters 

} 

public class JsonTransformer { 

    public static String toJson(Object object) { 
     return new Gson().toJson(object); 
    } 

    public static <T extends Object> T fromJson(String json, Class<T> classe) { 
     return new Gson().fromJson(json, classe); 
    } 

} 
0

假設這是我送在我的請求,JSON

{ 'name': 'Rango' } 

這是我是如何配置我的控制器解析請求主體。

public class GreetingsController { 
     GreetingsController() { 
      post("/hello", ((req, res) -> { 
       Map<String, String> map = JsonUtil.parse(req.body()); 
       return "Hello " + map.get("name") + "!"; 
      }))); 
     } 
    } 

    public class JsonUtil { 
     public static Map<String, String> parse(String object) { 
      return new Gson().fromJson(object, Map.class); 
    } 
相關問題