【问题标题】:Android send json to SpringAndroid 发送 json 到 Spring
【发布时间】:2016-07-23 10:45:58
【问题描述】:

弹簧控制器

 @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 错误。 我需要添加标题或其他内容吗?

【问题讨论】:

  • 错误 500 表示存在服务器端问题。您需要包含异常堆栈跟踪,没有它的代码不足以诊断问题。

标签: java android json ajax spring


【解决方案1】:

简单的方法

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

希望这会有所帮助!

【讨论】:

  • 如果您认为该问题是重复的,请不要复制粘贴另一个答案。
  • 我遵循发布有价值的代码而不是发送到某个链接的原则,并且始终将学分归于你得到这个的地方方法。顺便说一句,我丰富了@Sachin Gurnani,发布了一个如何使用它来满足用户需求的示例。
猜你喜欢
  • 1970-01-01
  • 2016-05-24
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 2012-01-29
相关资源
最近更新 更多