使用Volley将登录参数发送到Rails服务器

时间:2015-04-09 13:27:23

标签: android ruby-on-rails json android-volley

链接到Rails服务器。 https://afternoon-sea-5654.herokuapp.com。 我想发送一个简单的JSON POST来尝试登录。我得到以下凌空错误

错误

04-09 14:03:56.156 3002-3031 / com.digitalnatives.volleytest E / Volley:[244] BasicNetwork.performRequest:https://afternoon-sea-5654.herokuapp.com/sessions/create的意外响应代码500 04-09 14:03:56.160 3002-3002 / com.digitalnatives.volleytest E / Volley:[1] 4.onErrorResponse:错误:


我无法判断这是否与格式化请求的方式有关。以下是手动使用curl的示例登录请求。

登录 -  curl -X POST -d“user [email] =ywaghmare5203@gmail.com& user [password] = 12345678&” https://afternoon-sea-5654.herokuapp.com/sessions/create.json

请求参数:电子邮件,密码,

响应参数:

{ “ID”:10 “用户名”: “yogeshwaghmare1”, “电子邮件”: “ywaghmare5203@gmail.com”, “password_hash”: “$ 2A $ 10 $ pvLhzJlVz8Hl86O7N / ekiO2wrwNxbfTZlYPtccY4f7vXYNFs1vq6a”, “password_salt”:“$ 2 $ 10 $ pvLhzJlVz8Hl86O7N / ekiO “ ”last_login_time“:空, ”IS_ACTIVE“:空, ”contact_number“: ”123456“, ”created_at“: ”2015-04-01T19:20:37.552Z“, ”的updated_at“:” 2015-04-01T19:20:37.552Z“}

JSONObjectRequest代码

   public void loginTest() {

   private final String LOGIN = "https://afternoon-sea-5654.herokuapp.com/sessions/create";

// Post params to be sent to the server
    HashMap<String, String> params = new HashMap<String, String>();
        // old test code :  params.put("user[email]=test1@gmail.com&",     "user[password]=12345678&");
          params.put("user[email]", "test1@gmail.com");
          params.put("user[password]", "12345678");


    JsonObjectRequest req = new JsonObjectRequest(LOGIN, new JSONObject(params),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        VolleyLog.v("Response:%n %s", response.toString(4));
                        responseText.setText("Worked!");
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },

        new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.e("Error: ", error.getMessage());
            responseText.setText("Nope");
        }
    });

// add the request object to the queue to be executed
    AppController.getInstance().addToRequestQueue(req);
}

1 个答案:

答案 0 :(得分:1)

实际上,作为回应,您没有获取JSON数据。它返回有关重定向的HTML消息。您的回复是 302

响应代码 500 表示服务器端语法错误。您可以通过在线API测试平台测试您的API,例如 Runscope 。当我们与网络团队和Android团队合作时,它确实节省了我们的时间和困惑。

Runscope Link