有没有办法在Android中使用?param1=val1¶m2=val2
向GET请求添加查询参数(okhttp
)?
我正在寻找一个API,而不是在循环中手动添加参数并转义值。
答案 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()