您好我正在尝试使用get方法获取来自Web API的数据。但我一直在收到这些错误。
StringRequest stringRequest = new StringRequest(Request.Method.GET, uri, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("response", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("error", error.toString());
}
});
AppController.getInstance().addToRequestQueue(stringRequest);
错误:
pp E/Volley: [132] NetworkDispatcher.run: Unhandled exception java.lang.RuntimeException: Bad URL null
java.lang.RuntimeException: Bad URL null
p E/Volley: [131] BasicNetwork.performRequest: Unexpected response code 405
非常感谢任何帮助。
答案 0 :(得分:0)
您收到“意外的响应代码405”,因此它与服务器响应有关。
“不允许405方法”是一个HTTP响应状态代码,指示服务器已接收并识别指定的请求HTTP方法,但服务器已拒绝该请求资源的特定方法。“
答案 1 :(得分:0)
问题出在客户端。问题是默认情况下请求设置为POST。使用以下2种方法之一。两者都适合我。
public void getJsonData(){
JsonObjectRequest jsonReq = new JsonObjectRequest
(Request.Method.GET, URL_FEED, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("response", response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Server", "onErrorResponse");
}
});
NetworkController.getInstance().addToRequestQueue(jsonReq);}
第二种方法
public void getJsonData() {
final String URL = "URL";
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("response", response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("error", error.toString());
}
}) {};
final RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
requestQueue.addRequestFinishedListener(new RequestQueue.RequestFinishedListener<Object>() {
@Override
public void onRequestFinished(Request<Object> request) {
requestQueue.getCache().clear();
}
});
}