我正在创建一个android项目。对于我的项目,我使用PHP Slim Framework创建了一个REST API。当我在浏览器中打开API的URL时,它工作正常。见下图。
但是当我尝试使用JsonObjectRequest向此URL发送请求(在上面的快照中显示)时,我在logcat中收到此错误。
E / Volley:[397] BasicNetwork.performRequest:http://192.168.94.1/MyApplication/v1/countrydata的意外响应代码400
我正在使用以下代码。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, Config.URL_COUNTRY_DATA, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<String,String>();
params.put("Authorization",Config.API_KEY);
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> headers = new HashMap<String,String>();
headers.put("Charset", "UTF-8");
headers.put("Content-Type", "application/x-javascript");
return headers;
}
};
AppController.getInstance().addToRequestQueue(jsonObjectRequest);
我在谷歌搜索了很多,发现了一些令人困惑的解决方案。有些人说你没有使用标题,有些人说没有用户标题等等。
我尝试了所有解决方案但到目前为止都没有。
答案 0 :(得分:0)
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "Bearer " + strToken);
return headers;
}
};
RequestQueue mRequestQueue = Volley.newRequestQueue(getActivity());
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(20000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
mRequestQueue.add(jsonObjReq);