【发布时间】:2017-04-05 15:02:15
【问题描述】:
我正在使用GenericRequest(内置 jsonrequest 的扩展)对接受 json 对象并返回字符串的服务器进行 REST 调用,如果 json 对象已经存在,则该字符串为“0”否则为非零字符串。
但是,使用以下代码,无论我发送什么,我总是得到一个“0”。
JSONObject userobj = new JSONObject();
try {
userobj.put("email",email);
userobj.put("password",password);
userobj.put("username",name);
} catch (JSONException e) {
e.printStackTrace();
}
Log.d(TAG, userobj.toString());
GenericRequest jsonObjReq = new GenericRequest(Request.Method.POST, REGISTER_URL, String.class, userobj,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Handle access token.
Log.d(TAG, "Register received: " + response);
long token = Long.parseLong(response);
if(token == 0) {
Log.d(TAG, "Received 0!");
Toast.makeText(MainActivity.this, R.string.registerfail_toast, Toast.LENGTH_LONG).show();
} else {
Log.d(TAG, "Register success!");
Toast.makeText(MainActivity.this, R.string.Welcome, Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, error.toString());
Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
public String getBodyContentType() {
return "application/json";
}
};
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(0, -1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
helper.add(jsonObjReq);
在 Postman 中进行测试时,输入如下: { “电子邮件”:“dlee23122”, “密码”:“1234”, “用户名”:“dlee23122” }, 它返回一个非零字符串。 (屏幕截图如下。)但是当使用 Volley 给定一个稍微不同的输入时,它会一直返回一个“0”。可能是什么原因?
提前致谢!
【问题讨论】:
-
截取您的邮递员 http 听到的截图或在此处添加它们。 postman 不是真正的 REST 客户端。
-
@Vahidhashemi 嗨,感谢您的帮助。增加了 Postman 的截图。标头是“Content-Type”:“application/json”。
-
原来这是Here中提到的问题。