繁体   English   中英

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

Add query params to a GET request in okhttp in Android

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

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

6 个回复

尝试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();

使用HttpUrl

假设您已准备好String url,只想附加查询:

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

有关查询参数的详细信息,请参阅Vitaly的答案,或参阅文档

对于当前版本的okhttp, 这是不可能的没有提供可以为您处理此问题的方法

然而,okhttp的开发人员之一Jesse Wilson 表示

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

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

例子:

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

输出:

https://www.google.com/search?q=polar%20bears
val url = "https://api.flutterwave.com/v3/transfers/fee".toHttpUrlOrNull()?.newBuilder()
            ?.addQueryParameter("amount", "100")
            ?.addQueryParameter("currency", curr)
            ?.build()

 val request = url?.let {
        okhttp3.Request.Builder()
            .header("Authorization", "Bearer ${HeaderBearerKey}")
            .header("Content-Type", "application/json")
            .url(it)
            .build()
    }
3 通过 OkHttp 向 HTTP Post 请求添加查询参数?

我是 Android Studio 中编码的新手,并且一直在尝试制作一个应用程序,我使用最新的 OkHTTP 向我的服务器发出发布请求,我需要解析 accountId 和正文中的一个键,为此我使用了以下代码: - 现在我想在查询参数中添加名称和用户名。 我需要为此添加什么代码? 请帮助我.... ...

5 Android Okhttp请求未响应

我正在尝试在应用程序的登录页面中发布JSON对象。 我搜索了许多示例并尝试了它们。 但只有我的android 4.3设备运行良好,其他上层api级别的设备甚至都没有响应返回。 我的代码如下: R.string.rutKontrolServis网址如下所示: https ://our ...

6 Android OKHTTP发布请求

我目前在执行我的发布请求时出错。 我试图做别人在其他stackoverflow链接上建议的操作,但是对我来说不起作用。 下面是我的代码: 它给出了“响应响应= client.newCall(request).execute();”上的错误。 线。 我在这里做错什么了吗? ...

7 在 OkHttp 中使用请求正文的 GET 请求

我正在尝试将 OkHttp 3.6.0 与 Elasticsearch 一起使用,但我一直坚持向Elasticsearch Multi GET API发送请求。 它需要发送带有请求正文的 HTTP GET 请求。 不幸的是,如果我尝试自己构建请求,OkHttp 不支持开箱即用并抛出异常。 是否 ...

8 okhttp从数组添加post params

即时尝试使用okhttp3发送带有N个参数的发布请求。 我只能通过预定义数量的参数找到一种方法。 如何动态地为帖子请求添加更多参数? 我想循环遍历键和值的数组列表,并将它们添加到addFormDataPart或任何其他等效方法。 这是当前的代码: ...

10 在获取HTTP请求中传递查询数据参数

因此,我的Recipe的后端生成App的Get HTTP端点接受params并根据路由中传递的参数操纵响应。 例如:如果我想收到仅属于某些美食组的食谱,我可以通过我的获取HTTP请求传递这些美食组 这是我的action.js 和我的组件: 但这似乎没有用,我的代码怎 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM