0

在 android 中有一个类似 http://api.openweathermap.org/data/2.5/forecast/daily?q=khulna&mode=json&units=metric&cnt=7&appid=02b7的 URL ;

所以我使用 Uri builder

final String FORECAST_BASE_URL=
            "http://api.openweathermap.org/data/2.5/forecast/daily?";
    final String QUERY_PARAM="q";
    final String FORMAT_PARAM="mode";
    final String UNITS_PARAM = "units";
    final String DAYS_PARAM="cnt";
    final String appID="&appid=";


    //http://api.openweathermap.org/data/2.5/forecast/daily?q=khulna&mode=json&units=metric&cnt=7


    //now uri build
    Uri buildUri =  Uri.parse(FORECAST_BASE_URL).buildUpon()
            .appendQueryParameter(QUERY_PARAM,"khulna")
            .appendQueryParameter(FORMAT_PARAM,"json")
            .appendQueryParameter(UNITS_PARAM,"metric")
            .appendQueryParameter(DAYS_PARAM,Integer.toString(7))
            .appendQueryParameter(appID, BuildConfig.OPEN_WEATHER_MAP_API_KEY)
            .build();

但输出是 http://api.openweathermap.org/data/2.5/forecast/daily?q=khulna&mode=json&units=metric&cnt=7&%26appid%3D=02b7

这里有两个额外的字符'%26'和'%3D';

我将此 URI 转换为字符串并使用替换方法替换这两个字符

String url = buildUri.toString().replace("%3D","").replace("%26","");

但我的问题是如何构建预期的 Uri 而不是通过字符串替换方法替换两个字符。

4

1 回答 1

0

改变:

final String appID="&appid=";

final String appID="appid";
于 2017-01-27T07:09:11.443 回答