【问题标题】:Android HTTP calls not setting Accept-Language headers?Android HTTP 调用未设置 Accept-Language 标头?
【发布时间】:2014-01-25 01:25:23
【问题描述】:

我已将我的 Google Nexus 4 设备设置为 Français (France) 设置,并且正在浏览一个通过客户端的 Accept-Language HTTP 标头本地化的站点。

但是,当我查看到达服务器的Accept-Language 设置时,我看到的只是en-US

如果我使用 Dolphin 浏览器在同一设备上查看同一站点,则标题为 fr-FR,en-US;q=0.8,并且该站点以法语正确显示。

Nexus 4 是一款开发设备,运行 Android 4.4.2; Nexus 4 构建/KOT49H。 Chrome 的版本是 32.0.1700.99。

有人知道我如何让 Chrome 支持设备的语言设置吗?

我正在开发一个 Android 应用程序,并希望 HTTP 客户端 org.apache.http.client.HttpClient 在调用我的 Web 服务时能够设置 Accept-LanguageHTTP 标头。然而事实并非如此,我正试图找出原因。

Chrome 浏览器也表现出这种行为,所以我想我会看看其他人是否有这个问题(发布我的代码有点复杂,而且不太合适)。

我真的必须根据我从Locale.getDefault().getLanguage() 返回的内容来明确设置 HTTP 标头吗?

这似乎不是能够通过 Android 设置设置用户语言的意图。

【问题讨论】:

  • 这不是技术支持论坛,请尝试另一个堆栈交换,如 android.stackexchange.com 或谷歌任何关于 chrome 本身的文档
  • 我阅读了一些 Android.SE 网站问题。他们似乎比开发更关注用户。所以我在这里问。这里还有几个类似的问题。谢谢!
  • 您的问题似乎以用户为中心!如果您认为这不是故意的,那么您可能需要添加一些其他细节来解决您的问题,目前我只能看到您正在使用您安装的其他两个人的应用程序,这不是你开发的东西,它们不起作用
  • @NickCardoso:感谢您的反馈!我会改写,看看能不能得到更好的回应。

标签: android google-chrome http-headers


【解决方案1】:

那么您是否正在执行以下步骤? (我想从你的问题中你已经是,但我想检查一下,因为这对我有用)

  HttpClient client = new DefaultHttpClient();
  HttpPost request = new HttpPost(webServiceUrl);
  request.addHeader("Accept-Language", "fr");
  HttpResponse response = client.execute(request);

【讨论】:

  • 这就是问题所在:我真的需要显式设置标题吗?当然,Chrome(和默认的 HTTP 客户端)应该从系统中读取该信息,而不是假设 en-US ?
  • 好吧 chrome 与位置设置集成在一起,因此它可能是基于此决定的(如果您已启用它)。我认为您确实需要为 Http Client 显式添加它。如果您检查了它的默认标题并且这是错误的,那么您是否检查了您的默认语言环境为国家/地区返回的内容?也许语言设置不会改变语言环境
  • 再次感谢!位置设置打开或关闭似乎没有效果,但你让我想到:也许如果我清除 Chrome 缓存可能会产生影响。它做了!它似乎从头开始重新启动 Chrome,然后它重新读取系统语言设置并重新加载内容。另外,您是对的:看起来标准请求需要在标头中明确设置语言。否则,我只会在 Apache Web 日志中获得 - 作为 Accept-Language 标头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
相关资源
最近更新 更多