为了账号安全,请及时绑定邮箱和手机立即绑定

Android:在 URI 生成器中附加没有键的查询参数

Android:在 URI 生成器中附加没有键的查询参数

蛊毒传说 2023-08-04 15:26:23
我正在使用服务“ https://somedomain.net/api/items.php?token=token&item ”的 Web API 来检索 Json 响应。在 Android 中,我使用 URI 构建器:    public static URL buildUrl(String token, String item) {        Uri builtUri = Uri.parse(BASE_URL).buildUpon()                .appendQueryParameter(PARAM_TOKEN, token)                .appendQueryParameter(PARAM_ITEM, item)                .build();        URL url = null;        try {            url = new URL(builtUri.toString());        } catch (MalformedURLException e) {            e.printStackTrace();        }        return url;    }作为 URI 生成器的结果“ https://somedomain.net/api/items.php?token=token&item=item ”我需要使用没有参数键的值“item”。我尝试使用“null”不起作用“ https://somedomain.net/api/items.php?token=token&=item ”我在互联网上搜索了三天,没有找到答案。在此先感谢您的帮助。
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

没有函数可以添加没有值的addQueryParam,因此您可以添加一些虚拟值,例如“”,然后将其替换为空字符串(replace(“=”,“”))。


但我建议您自己构建查询,然后使用 Uri.Builder 的“查询”功能附加 queryString。


public static URL buildUrl(String token, String item) {

    String query = new StringBuilder()

            .append(PARAM_TOKEN).append("=").append(token).append("&")

            .append(PARAM_ITEM).toString();


    Uri builtUri = Uri.parse(BASE_URL).buildUpon()

            .encodedQuery(query)

            .build();


    URL url = null;

    try {

        url = new URL(builtUri.toString());

    } catch (MalformedURLException e) {

        e.printStackTrace();

    }


    return url;

}

但它要求 BASE_URL 没有任何查询参数。如果有,那么您必须从旧 Uri 的部分内容构建新 Uri,但将查询替换为根据 BASE_URL 查询和附加参数构建的您自己的查询


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信