【发布时间】:2017-09-12 08:05:18
【问题描述】:
我正在尝试学习 Volley 库以将数据发布到 Web 服务中。我需要实现用户注册表单,下面是带有参数和标题的邮递员图像...
现在的问题是,我遇到了错误
com.android.volley.ServerError
这是我的 volley post 方法的代码。
public void postNewComment(){
try {
RequestQueue requestQueue = Volley.newRequestQueue(this);
String URL = "http://myurl/api/users";
JSONObject jsonBody = new JSONObject();
jsonBody.put("email", "test1@gmail.com");
jsonBody.put("user_type", "C");
jsonBody.put("company_id", "0");
jsonBody.put("status", "A");
jsonBody.put("password", "123456");
final String requestBody = jsonBody.toString();
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("VOLLEY", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
Log.e("VOLLEY", error.toString());
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
final Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "Basic " + "My_auth_key");
headers.put("Content-Type", "application/json");
return headers;
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String responseString = "";
if (response != null) {
responseString = String.valueOf(response.statusCode);
// can get more details such as response.headers
}
return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
}
};
requestQueue.add(stringRequest);
} catch (JSONException e) {
e.printStackTrace();
}
}
请提出我哪里出错了。 URL 与邮递员一起工作正常,你也可以看到我需要设置 2 个标题。我还用 AsyncTask 尝试了这个 Url post 方法,它工作得很好。现在我需要使用 volley 库来实现它。请建议。谢谢你。
这是我的 logcat 错误:
E/Volley:[81910] BasicNetwork.performRequest:“Myurl”的意外响应代码 405
【问题讨论】:
-
在此处发布您的完整 logcat 日志。 com.android.volley.ServerError 它也应该给你错误编号,比如 400,500
-
请检查先生@SahilManchanda
-
@paragKartpay 您得到 405,这意味着方法不允许。但是,如果您的邮递员的形象。它的工作。我的猜测是你的凌空请求没有得到验证。检查您的标题值。您可能在标题中做错了什么。还有一件事,你不需要重写 parseNetworkResponse 方法。删除它。