我在一个项目中使用Volley框架,我总是需要自己处理重定向来处理标题.
如何处理重定向现在取决于方法和传输层.我想使用Volley的默认值(自动选择传输层)而不更改任何Volley代码.
一个有效的解决方案是始终使用OkHttp作为传输层(如问题和Volley的贡献中所述),但我想知道是否存在没有其他框架的方法.
因此,我正在寻找一种"干净"的方式来禁用自动重定向处理.
编辑:
我更喜欢使用OkHttp,这样我就不必管理自己在Android上使用的版本,但是当想要改变传输层行为时,Itai Hanski提供的解决方案非常好.
以下是我的代码。我第一次得到 com.android.volley.NoConnectionError: java.io.InterruptedIOException,第二次它工作正常。服务器响应也很好,服务器端没有错误。
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonObjectRequest request = new JsonObjectRequest(URL, null,
new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject responseJsonObject) {
try {
if (responseJsonObject.has("user")
&& !responseJsonObject
.isNull("user")) {
user.jsonParser(responseJsonObject
.getJSONObject("user"));
}
} catch (JSONException exception) {
Toast.makeText(context, "Error Occured",
Toast.LENGTH_SHORT).show();
}
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
progressDialog.dismiss();
Log.d("Volley Error", volleyError.toString());
Toast.makeText(context, "Connectivity Error",
Toast.LENGTH_SHORT).show();
}
});
queue.add(request);
progressDialog.show();
queue.start();
Run Code Online (Sandbox Code Playgroud)