Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add query params to a GET request in okhttp in Android

Tags:

android

okhttp

Is there a way to add query params (?param1=val1&param2=val2) to a GET request using okhttp in Android?

I am looking for an API and not manually adding the params in a loop and escaping the values.

like image 200
dors Avatar asked Apr 26 '15 08:04

dors


3 Answers

Use HttpUrl.

Say you already have a String url ready, just want to append the queries:

HttpUrl url = HttpUrl.parse("http://www.google.com/search").newBuilder()
   .addQueryParameter("q", "cat videos")
   .build();

For the details about query parameters, see Vitaly's answer, or refer to the documentation.

like image 81
Jack Avatar answered Oct 10 '22 05:10

Jack


Try HttpUrl class (in okhttp package).


//adds the pre-encoded query parameter to this URL's query string
addEncodedQueryParameter(String encodedName, String encodedValue)

//encodes the query parameter using UTF-8 and adds it to this URL's query string
addQueryParameter(String name, String value)

Note: if there are already name/value pairs with this name, these functions will just add another pair


setEncodedQueryParameter(String encodedName, String encodedValue)

setQueryParameter(String name, String value)

Note: if there are already name/value pairs with this name, these functions will remove them and only after that add this new pair


Example:

HttpUrl url = new HttpUrl.Builder()
    .scheme("https")
    .host("www.google.com")
    .addPathSegment("search")
    .addQueryParameter("q", "polar bears")
    .build();
like image 33
Vitaly Zinchenko Avatar answered Oct 10 '22 06:10

Vitaly Zinchenko


This is not possible with the current version of okhttp, there is no method provided that will handle this for you.

However, Jesse Wilson, one of okhttp's developers, has stated that

We're adding a new HttpUrl class that can do this in the next release.

like image 38
Tim Avatar answered Oct 10 '22 06:10

Tim