我正在通过 Java servlet 设置对 Google 地理编码 API 的 HTTP 请求。不幸的是,每次这个请求包含一个特殊字符(例如'ß'),请求都会返回一个“Bad request / 400”异常。由于这项服务即将在这些奇怪角色相当流行和必要的国家 - 欧洲 - 我在这里遇到了一些麻烦。将请求中的特殊字符替换为十六进制转义字符串('ß' 为 0xDF/%DF)会导致来自 Google 的“INVALID_REQUEST”响应。
这就是我获得 XML 响应的方式:
stringToReverse = URLEncoder.encode(url, "UTF-8");
URL urlR = new URL(url);
URLConnection connection = urlR.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("string=" + stringToReverse);
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String decodedString;
String resultString = "";
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
resultString += decodedString;
}
in.close();
希望有人可以在这里帮助我。我想 URLConnection 或其中一个流需要设置为 UTF-8,考虑到 Google 的响应也是用 UTF-8 编码的?!