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

我正在使用服务“ 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 ”


我在互联网上搜索了三天,没有找到答案。


在此先感谢您的帮助。


蛊毒传说
浏览 116回答 1
1回答

开满天机

没有函数可以添加没有值的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 查询和附加参数构建的您自己的查询
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java