2014-01-25 32 views
2

我已將Google Nexus 4設備設置爲Français (France)設置,並且正在瀏覽通過客戶端的Accept-Language HTTP標頭本地化的網站。Android HTTP調用沒有設置Accept-Language頭文件?

但是,當我看到Accept-Language設置到達服務器時,我看到的僅僅是en-US

如果我使用Dolphin瀏覽器查看同一設備上的同一站點,則標頭爲fr-FR,en-US;q=0.8,並且該站點以法語正確顯示。

Nexus 4是一款開發設備,運行Android 4.4.2; Nexus 4 Build/KOT49H。 Chrome的版本是32.0.1700.99。

有誰知道我如何讓Chrome履行設備的語言設置?

我正在開發一個Android應用程序,期待HTTP客戶端org.apache.http.client.HttpClient在設置Accept-Language HTTP標頭時調用我的Web服務。但它不,我試圖找出原因。 Chrome瀏覽器也表現出這種行爲,所以我想我會看看是否有其他人有這個問題(張貼我的代碼是有點複雜,並不真正適合)。

我真的必須根據我從Locale.getDefault().getLanguage()得到的內容明確設置HTTP標頭嗎?

看來這不是能夠通過Android設置來設置用戶語言的意圖。

+1

這不是技術支持論壇,請嘗試像http:// android之類的其他堆棧交換.stackexchange.com /或谷歌鉻本身的任何文檔 –

+0

我通讀了一些Android.SE站點的問題。他們似乎比開發重點更關注用戶。所以我在這裏問。這裏也有幾個與此類似的問題。謝謝! –

+0

你的問題似乎是以用戶爲中心的!如果你認爲它的意思不是那麼那麼你可能需要添加一些其他細節來清除你的尷尬,目前所有的iI都可以看到你正在使用你安裝的其他兩個人應用程序,而不是你已經開發的東西,他們不工作 –

回答

2

那麼你在做下面的步驟? (我想你的問題已經是你了,但我想檢查,因爲這適用於我)

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

這就是問題所在:我是否真的需要明確設置標題?當然,Chrome(和默認的HTTP客戶端)應該從系統中讀取這些信息,而不是假設「en-US」? –

+1

嗯鉻與位置設置集成在一起,所以有可能根據它來決定(如果你已經啓用它)。我認爲你確實需要明確地爲Http Client添加它。如果你已經檢查過它的默認標題並且這是錯誤的,你是否檢查過默認的Locale返回的國家地區?也許語言的設置不會改變語言環境 –

+1

再次感謝!打開或關閉位置設置似乎沒有辦法,但你讓我想:也許如果我清除Chrome緩存,可能會產生影響。它做了!它似乎從頭開始重新啓動Chrome,然後*重新讀取系統語言設置並重新加載。另外,你是正確的:看起來標準請求需要在頭文件中明確設置語言。否則,我只需在Apache網絡日誌中以'Accept-Language'標題的形式獲取'-'。 –