链接到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:的意外响应代码500https://afternoon-sea-5654.herokuapp.com/sessions/create04-09 14:03:56.160 3002-3002/com.digitalnatives.volleytest E/Volley﹕[1] 4.onErrorResponse:错误:
我不知道这是否取决于我格式化请求的方式。下面是一个手动使用curl的登录请求示例。
登录-curl-X POST-d"用户[电子邮件]=ywaghmare5203@gmail.com&user[密码]=12345678&"https://afternoon-sea-5654.herokuapp.com/sessions/create.json
请求参数:电子邮件、密码、
响应参数:
{"id":10,"username":"yogeshwaghmare1","email":"ywaghmare5203@gmail.com","password_hash":"$2a$10$pvLhzJlVz8Hl86O7N/ekiO2wrwNxbfTZlYPtccY4f7vXYNFs1vq6a","password_salt":"2a$10$PVLhzjlVz8 Hl86O3N/ekiO","last_login_time":null,"is_active":null、"contact_number":"123456"、"created_at":"2015-04-01T19:37.552Z","updated_at":"}
JSONObject请求代码
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);
}
实际上,作为响应,您没有获取JSON数据。它正在返回一条关于重定向的HTML消息。您的回复是302
响应代码500表示这是服务器端的语法错误。您可以通过在线api测试平台测试您的api,如Runscope。当我们与网络团队和安卓团队合作时,它确实节省了我们的时间和困惑。
Runscope链接