我的应用中有一个登录屏幕。我想从输入字段中检索电话号码,并将其作为一个带有齐射的发布请求发送到我的后端服务器。后端服务器的结构如下:
"user": {
"phone": 909099999
}
我尝试过这段代码:
final String phone = login_phoneTET.getText().toString();
Map<String, String> params = new HashMap<>();
params.put("phone", phone);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
Constants.TING_OTP_ENDPOINT,
new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, "Success");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "Failed with an Error" + error.getMessage());
error.printStackTrace();
}
}
) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(20000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
VolleySingleton.getVolleySingleton(this).addToRequestQueue(jsonObjectRequest);
并尝试使用字符串请求。我一直在logcat中得到这个错误:
E/Volley: [22489] BasicNetwork.performRequest: Unexpected response code 500 for https://:):)/api/user/generateOTP
我是否正确提出此请求或有更好的方法吗?感谢。
答案 0 :(得分:2)
这是服务器端错误。所以我认为你需要关注你的服务器。
答案 1 :(得分:0)
请使用https://jsonlint.com/验证您的json(您发送的那个,以及您收到的那个)。
如果您编写的JSON是您要发送的JSON:
"user": {
"phone": 909099999}
那么它不是一个有效的JSON,并且有你的错误:
Error: Parse error on line 1:
"user": { "phone": 909099
------^
Expecting 'EOF', '}', ',', ']', got ':'