#android #android-volley #okhttp
#Android #android-volley #okhttp
Вопрос:
Этот OkHttpStack больше не поддерживается в OkHttp2.0: https://gist.github.com/JakeWharton/5616899
Каков текущий шаблон для интеграции OkHttp 2.0.0 с Volley?
Комментарии:
1. По этому поводу уже есть комментарий, указывающий на версию поддержки OkHttp 2.0
HttpStack
.2. Да, но класс, опубликованный ceram1, имеет настраиваемую обработку кэша. Я искал самый простой способ. А также, я понятия не имею, является ли эта реализация оптимальной / стандартной / правильной
Ответ №1:
Вы должны использовать модуль okhttp-urlconnection, который реализует java.net.HttpURLConnection API, поэтому:
- Загрузите или установите зависимость для okhttp-urlconnection
- Перепишите свой OkHttpStack, чтобы использовать класс OkUrlFactory:
public class OkHttpStack extends HurlStack { private final OkUrlFactory okUrlFactory; public OkHttpStack() { this(new OkUrlFactory(new OkHttpClient())); } public OkHttpStack(OkUrlFactory okUrlFactory) { if (okUrlFactory == null) { throw new NullPointerException("Client must not be null."); } this.okUrlFactory = okUrlFactory; } @Override protected HttpURLConnection createConnection(URL url) throws IOException { return okUrlFactory.open(url); } }
Комментарии:
1. Я использовал это решение и добавил следующие зависимости gradle:
compile 'com.squareup.okhttp:okhttp:2.0.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' compile 'com.squareup.okio:okio:1.0.1'
Ответ №2:
Вы также можете использовать это
import com.android.volley.toolbox.HurlStack;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.OkUrlFactory;
/**
* An {@link com.android.volley.toolbox.HttpStack HttpStack} implementation
* which uses OkHttp as its transport.
*/
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);
}
}
Комментарии:
1. Я думаю, что это более читабельно, чем ответ @fjmontiel, но, кроме того, это точно то же самое, не так ли?
2. да!, существует множество вариантов в зависимости от требований, например, для ssl gist.github.com/tbruyelle/0729aef4df2c11b21fdf
Ответ №3:
Вы также можете сделать это сейчас без зависимости от HttpURLConnection: