2016-04-04 27 views
0

春季控制器Android的JSON發送到春天

@RequestMapping(value = "/login", produces="application/json;charset=UTF-8" ,method = RequestMethod.POST) 
@ResponseBody 
public int checkLoginInfo(@RequestParam Map<String, String> params) { 
    User user=new Gson().fromJson((String) params.get("user"), User.class); 
    return userService.getUserInfo(user); 
} 

HTML

var params={userid:$("#userid").val(),password:$("#password").val()} 
$ajax({method:"post",data:{user:JSON.stringify(params)},url:"foo.bar"}); 

它的工作在網站上。 但我不知道如何發送Android的Json對象。

data:{user:JSON.stringify(params)} 

我已經測試

private static String makeJsonMsg() { 
    String retMsg = ""; 

    JSONStringer jsonStringer = new JSONStringer(); 

    try { 


     retMsg = jsonStringer.object() 
        .key("user").object() 
         .key("userid").value("userid") 
         .key("password").value("1234") 
        .endObject() 
       .endObject().toString(); 

    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return retMsg; 

} 

這樣, 但返回500錯誤。 我是否需要添加標題或其他內容?

+0

錯誤500意味着存在服務器端問題。您需要包含異常堆棧跟蹤,沒有它的代碼不足以診斷問題。 – kryger

回答

0

最簡單的方法

public void postData(String url,JSONObject obj) { 
    // Create a new HttpClient and Post Header 

    HttpParams myParams = new BasicHttpParams(); 
    HttpConnectionParams.setConnectionTimeout(myParams, 10000); 
    HttpConnectionParams.setSoTimeout(myParams, 10000); 
    HttpClient httpclient = new DefaultHttpClient(myParams); 
    String json=obj.toString(); 

    try { 

     HttpPost httppost = new HttpPost(url.toString()); 
     httppost.setHeader("Content-type", "application/json"); 

     StringEntity se = new StringEntity(obj.toString()); 
     se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
     httppost.setEntity(se); 

     HttpResponse response = httpclient.execute(httppost); 
     String temp = EntityUtils.toString(response.getEntity()); 
     Log.i("tag", temp); 


    } catch (ClientProtocolException e) { 

    } catch (IOException e) { 
    } 
} 

如何使用

JSONObject requestObject = new JSONObject(); 
requestObject.put("userid", email); 
requestObject.put("password", password); 

postData("http://your/login/url",requestObject) 

欲瞭解更多信息檢查How to send a JSON object over Request with Android?postData方法的信用爲@Sachin Gurnani answer

希望這有助於!

+0

如果您認爲問題是重複標記,請不要複製粘貼其他答案。 – kryger

+0

我遵循*後有價值的代碼*的原則,而不是*發送到某個鏈接*,並始終*給你的信用點,你得到這種方法*。順便說一句,我豐富@Sachin Gurnani張貼一個如何使用它符合用戶需求的例子。 –