1

为什么我收到以下方法的错误 java.util.UnknownConversionException: Conversion = 'D'。我创建了一个初始字符串,然后从一个方法返回它以执行 String.format。它发生在 String.format 中。

String url = StringUtils.join(new String[] { BASE_URL,
                "/location/inst/", slug,
                "/coursesections/number%s.json?apiKey=", apiKey,
                "&token=", GetAuthTokenEncoded(authToken) })


String url2 = String.format(url, ("/" + callNumber));

StringUtils 的输出

http://test.com/location/inst/testy/coursesections/number%s;.json?apiKey=dfsdfsdfsadfsdf&token=2.0%7Cidm%7Cidm%7Ctest%3Dbesrlin_50d4s9dd25dsee56f3a1e95fb4f%26berlin%3D50d49dd2e2f28cf450b0caa9f449%26campus%3Dberlin%3A50d49dd25ee56f3a1e95fb4f%7C2013-03-12T16%3A25%3A23%2B00%3A00%7C2013-03-12T19%3A25%3A23%2B00%3A00%7C09161a6011f2dc2e3443bc40b2d3f4b3d4f
4

2 回答 2

2

GetAuthTokenEncoded(authToken)包含%导致错误的全部负载。为什么不以加入其余字符串的相同方式附加 callNumber 呢?

String url = StringUtils.join(new String[] { BASE_URL,
            "/location/inst/", part,
            "/coursesections/number/", number, ".json?apiKey=", apiKey,
            "&token=", GetAuthTokenEncoded(authToken) })
于 2013-03-12T16:31:36.597 回答
1

url由于 URL 转义,要格式化的字符串中有“%3D” 。您需要将结果GetAuthTokenEncoded作为参数提供给它,String.format这样它就不会将“%3D”解释为占位符。

String url = StringUtils.join(new String[] { BASE_URL,
            "/location/inst/", part,
            "/coursesections/number%s.json?apiKey=", apiKey,
            "&token=%s");
String url2 = String.format(url, ("/" + callNumber), GetAuthTokenEncoded(authToken));
于 2013-03-12T16:31:02.233 回答