在Android中的okhttp中向GET请求添加查询参数

时间:2015-04-26 08:20:38

标签: android okhttp

有没有办法在Android中使用?param1=val1&param2=val2向GET请求添加查询参数(okhttp)?

我正在寻找一个API,而不是在循环中手动添加参数并转义值。

4 个答案:

答案 0 :(得分:12)

尝试HttpUrl课程(在okhttp包中)。

//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)

注意:如果已经存在具有此名称的名称/值对,则这些函数将只添加另一对

setEncodedQueryParameter(String encodedName, String encodedValue)

setQueryParameter(String name, String value)

注意:如果已经存在具有此名称的名称/值对,则这些函数将删除它们,并且仅在添加此新对之后

示例:

HttpUrl url = new HttpUrl.Builder()
    .scheme("https")
    .host("www.google.com")
    .addPathSegment("search")
    .addQueryParameter("q", "polar bears")
    .build();

答案 1 :(得分:2)

使用HttpUrl

假设您已经准备好了字符串url,只想附加查询:

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

有关查询参数的详细信息,请参见Vitaly的答案,或参考documentation

答案 2 :(得分:1)

当前版本的okhttp there is no method provided that will handle this for you无法做到这一点。

但是,Jesse Wilson是okhttp的开发者之一,has stated

  

我们正在添加一个新的HttpUrl类,可以在下一个版本中执行此操作。

答案 3 :(得分:0)

import android.net.Uri
var url = Uri.parse(urlWithoutQueryParams).buildUpon().appendQueryParameter("key","value").build().toString()