如何在android RequestParams()中传递嵌套的params

时间:2015-08-22 08:47:37

标签: android android-async-http

我正在使用android-async-http库通过使用RequestParams()传递params来从url获取json,当参数没有嵌套时它工作没有任何问题,但我的url包含嵌套的params而我不知道了解如何将这些参数添加到RequestParams()

从以下位置获取数据的网址:

https://www.someurl.com/something/v3/something/something?view=READER&fields=description,locale(country,language),name,pages/totalItems,posts/totalItems,published,updated,url&key=my_key

我想知道如何添加locale(country,language)pages/totalItems

我的主要活动

public void getBlogInformation() throws JSONException {

    RequestParams params = new RequestParams();
    params.put("key", "123asdf456ghjklabcdefghijklmn");
    params.put("view", "reader");
    params.put("fields", "description");

    //How to add next params???
    params.put("locale", );

    BlaBlaRESTClient.get("", params, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
           try {
                Log.d("Response ", ""+response);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
            super.onFailure(statusCode, headers, throwable, errorResponse);

            Log.d("Error: ", ""+errorResponse);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

您查询字符串具有以下字段 - 值对(或参数):

  • 查看 READER
  • 字段说明,区域设置(国家/地区,语言),名称,pages / totalItems,posts / totalItems,已发布,已更新,网址
  • my_key

没有“locale”等参数,它是您的某个值的一部分。所以你不能把它传递给

params.put("locale", "[whateveryouputhere]");

因为它会被输出类似于:

...?view=reader&locale=[whateveryouputhere]&...

我现在假设您调用的API不在您的控制之下,参数必须采用该特定形式。这意味着您必须对值进行URL编码,因为它包含与URLS中使用的字符冲突的字符:

description,locale(country,language),name,pages/totalItems,posts/totalItems,published,updated,url

作为

description%2Clocale(country%2Clanguage)%2Cname%2Cpages%2FtotalItems%2Cposts%2FtotalItems%2Cpublished%2Cupdated%2Curl

所以你会填充你的RequestParameters,如:

params.put("key", "123asdf456ghjklabcdefghijklmn");
params.put("view", "reader");
params.put("fields", "description%2Clocale(country%2Clanguage)%2Cname%2Cpages%2FtotalItems%2Cposts%2FtotalItems%2Cpublished%2Cupdated%2Curl");

当然你会用适当的描述替换'description',用整数替换'totalItems'。但原则仍然是一样的。然后服务器将获取参数 fields 并将字符串值解析为其各个值。

详情请见此处: URL Query String Wikipedia

请点击此处查看网址编码: URL Encoding/Decoding Tool