android – 改变Volley框架的重定向策略

前端之家收集整理的这篇文章主要介绍了android – 改变Volley框架的重定向策略前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个项目中使用Volley框架,我总是需要自己处理重定向来处理标题.

如何处理重定向现在取决于方法和传输层.我想使用Volley的默认值(自动选择传输层)而不更改任何Volley代码.

一个有效的解决方案是始终使用OkHttp作为传输层(如Issues and contribution for Volley中所述),但我想知道是否存在没有其他框架的方法.

因此,我正在寻找一种“干净”的方式来禁用自动重定向处理.

编辑:

我更喜欢使用OkHttp,这样我就不必管理自己在Android上使用的版本,但是当想要改变传输层行为时,Itai Hanski提供的解决方案非常好.

解决方法

我认为将 Volley that uses OkHttp的HttpStack实现作为其传输是最佳解决方
RequestQueue queue = Volley.newRequestQueue(this);

Network network = new BasicNetwork(new OkHttpStack());
RequestQueue queue = new RequestQueue(new DiskBasedCache(new File(getCacheDir(),"volley")),network);
queue.start();

OkHttpStack类:

public class OkHttpStack extends HurlStack {
private final OkHttpClient client;

public OkHttpStack() {
this(new OkHttpClient());
}

public OkHttpStack(OkHttpClient client) {
if (client == null) {
throw new NullPointerException("Client must not be null.");
}
this.client = client;
}

@Override protected HttpURLConnection createConnection(URL url) throws IOException {
return client.open(url);
}
}

更新:
如果您使用的是新版本的okhttp堆栈,请使用

public class OkHttpStack extends HurlStack {
    private final OkUrlFactory mFactory;

    public OkHttpStack() {
        this(new OkHttpClient());
    }

    public OkHttpStack(OkHttpClient client) {
        if (client == null) {
            throw new NullPointerException("Client must not be null.");
        }
        mFactory = new OkUrlFactory(client);
    }

    @Override
    protected HttpURLConnection createConnection(URL url) throws IOException {
       return mFactory.open(url);
    }
}

猜你在找的Android相关文章