链接到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);
}
答案 0 :(得分:1)
实际上,作为回应,您没有获取JSON数据。它返回有关重定向的HTML消息。您的回复是 302
响应代码 500 表示服务器端语法错误。您可以通过在线API测试平台测试您的API,例如 Runscope 。当我们与网络团队和Android团队合作时,它确实节省了我们的时间和困惑。