Is there a way to add query params (?param1=val1¶m2=val2
) to a GET request using okhttp
in Android?
I am looking for an API and no
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.
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.
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();
import android.net.Uri
var url = Uri.parse(urlWithoutQueryParams).buildUpon().appendQueryParameter("key","value").build().toString()