首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与谷歌地理编码-API不同的编码/修改

问与谷歌地理编码-API不同的编码/修改
EN

Stack Overflow用户
提问于 2012-05-31 22:33:49
回答 2查看 2.2K关注 0票数 1

我正在为我的Grails编写测试--应用程序,我在应用程序中发现了一个"bug“--至少我认为这是我的应用程序。

我的请求如下:

代码语言:javascript
复制
http://maps.googleapis.com/maps/api/geocode/json?address=Karlsruhe+76131+Tullastraße+17&sensor=false

答复中包含了我的州/省(我不知道确切的翻译-我来自德国,被划分为16个较小的“州”-称为“德国”)

我的状态名为“Badenürttemberg”,这是浏览器的响应。

在我的应用程序中,我使用一个URL和一个BufferedReader (带有一个InputStreamReader)来获得响应。

我试图断言,来自浏览器的响应等于我从代码中的URL连接获得的响应。

但是--这是一个问题/问题--它们不一样。我发现的唯一不同就是我的状态。

正如前面提到的,我从浏览器获得的响应包含"Baden-Württemberg",但是我通过代码获得的响应只包含"Baden-Wurttemberg“--用普通u切换了üis。

这是我的密码:

代码语言:javascript
复制
URLConnection connection = new URL(url).openConnection()

BufferedReader br = new BufferedReader(new InputStreamReader(connection.content, "UTF-8" ))
StringBuffer connectionResponse = new StringBuffer()

while (br.ready()) {
    connectionResponse.append(br.readLine())
}
br.close()
return connectionResponse.toString()

我的搜索引导我选择将一个字符集传递给InputStreamReader -正如我所预期的那样,我使用了这个字符集,但它并没有解决这个问题。

我只是搞不懂为什么这是可能的。

我该去哪看看?我没那么有经验,所以我很无知

编辑:我测试了更多,如果我搜索的街道上包含一个umlaut (“B renweg”或"Baerenweg“将是一个例子),两个响应(代码和浏览器)都包含正确的值:B renweg。似乎只有国家才会受此影响。

我应该马上联系谷歌吗?有了这个新的测试,我不太确定我是否能做些什么

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-01 11:44:54

问题解决了。我问了我的一位同事,他建议,唯一合理的原因可能是不同的请求头。

我能马上想到的唯一方法就是用威雷沙克来做这件事。因此,我下载并安装了它(与它一起安装的WinPCab),并在安装后对其进行了优化。

首先,我在Firefox中按F5并在Grails中运行测试,从而触发了这两个请求。

然后我添加了过滤器"http.response“(这意味着来自http.response的所有响应都应该是可见的)。响应头几乎相等,并且没有发生任何明显的错误。

然后,我筛选了"http.request“来比较发送到google的头文件,还有更多的内容,然后是响应。

首先,我比较了Accept-属性,并将代码中的属性设置为Browser-Response的值(这个值运行得很好)。没能解决问题。

接下来的属性是:接受语言。

在代码的请求头中,这个属性根本不存在,所以我从浏览器请求头和kazaam复制了它:它可以工作!

代码语言:javascript
复制
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3

若要在连接上设置此属性,请添加以下代码:

代码语言:javascript
复制
connection.setRequestProperty("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");

博士/长话短说

在请求头中设置语言属性,google就知道您希望响应使用哪种语言。

票数 4
EN

Stack Overflow用户

发布于 2012-06-01 09:29:35

URL的查询字符串应该是URL编码的,因此ß被转换成转义序列。URLEncoder.encode("?...", "UTF-8")。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10842189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档