Skip to content

Instantly share code, notes, and snippets.

@JakeWharton
Created May 21, 2013 01:14
Show Gist options
  • Select an option

  • Save JakeWharton/5616899 to your computer and use it in GitHub Desktop.

Select an option

Save JakeWharton/5616899 to your computer and use it in GitHub Desktop.
A `HttpStack` implementation for Volley that uses OkHttp as its transport.
import com.android.volley.toolbox.HurlStack;
import com.squareup.okhttp.OkHttpClient;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* An {@link com.android.volley.toolbox.HttpStack HttpStack} implementation which
* uses OkHttp as its transport.
*/
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);
}
}
@JeffMcKnight

Copy link
Copy Markdown

This implementation of OkHttpStack works with OkHttpClient v2.3.0 (doesn't use open(url) method):
https://gist.github.com/bryanstern/4e8f1cb5a8e14c202750

@vfede

vfede commented Jul 2, 2015

Copy link
Copy Markdown

@imminent version still works with these dependencies in gradle:

compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'

then you just have to init your RequestQueue with:

myRequestQueue = Volley.newRequestQueue(context, new OkHttpStack())

@GleidsonFerSanP

Copy link
Copy Markdown

@JakeWharton i' m your fan!!

@uniruddh

uniruddh commented Sep 9, 2016

Copy link
Copy Markdown

Any update on how we can use Volley with okhttp3 ?

@Anawaz

Anawaz commented Sep 10, 2016

Copy link
Copy Markdown

Any update on how we can use Volley with okhttp3 ?

@SylvainHocq

Copy link
Copy Markdown

@sushant4anshu

Copy link
Copy Markdown

client.open(url);

open method is not working,
Is there any working alternative for this?.

@TamirSagiGimso

TamirSagiGimso commented Mar 13, 2018

Copy link
Copy Markdown

@sushant4anshu, yes,
That one works for me

add these libraries to gradle file
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:1.6.+'

then :

/**
* An {@link com.android.volley.toolbox.HttpStack HttpStack} implementation which
* uses OkHttp as its transport.
*/

  private 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);
        }
    }

while creating Volley Queue:
mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext(), new OkHttpStack());

@khat33b

khat33b commented May 24, 2018

Copy link
Copy Markdown

What is the advantage of using OkHttp as transport for Volley?

@swankjesse

swankjesse commented Mar 2, 2019

Copy link
Copy Markdown

OkUrlFactory is gone

It was deprecated in December 2015 and deleted in March 2019. You should use this instead:
https://gist.github.com/bryanstern/4e8f1cb5a8e14c202750

@4sskick

4sskick commented May 21, 2024

Copy link
Copy Markdown

thank you guys for the insight, here the updated version using volley 1.2.1 (latest) https://gist.github.com/4sskick/d1318379500747564d8f1c8d6af1f796 in case still you guys still has old project which need to maintain but don't want to refactor to OkHttp or another request library

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment