2009-11-04 69 views
1

我對Java不熟悉,但我需要從我的applet中向遠程webservice發出請求。如何根據applet的請求設置Accept-Language頭文件

Web服務(.Net 1.1)使用HttpContext.Current.Request.UserLanguages[0]來確定要使用的語言。但這個成員的價值一直是空的。

那麼有沒有辦法通過Accept-Language頭和類似「en-GB」的設置?

+0

對不起。改寫問題以適合您的真實問題 – jitter 2009-11-04 10:32:39

回答

2

如果知道applet運行的系統的默認語言(操作系統)足夠好,您可以從Applet#getLocale()得到它。如果您確實需要首選的瀏覽器語言,則可以從ServletRequest#getLocale()的Servlet容器中獲取服務器端的內容,並動態生成小程序標記,並將語言代碼作爲參數傳遞給小程序。

+0

不好意思問,但我得到了下面的問題 「的HttpServletRequest解決不了的」 我已經在上面的「進口javax.servlet.http包添加了這個*。 「 但仍然沒有運氣,找不到我需要做什麼?我試圖做 HttpServletRequest request = ServletActionContext.getRequest(); Locale userPreferredLocale = request.getLocale(); 有什麼建議嗎? – 2009-11-04 14:23:17

2

這可能着眼於Accept-Language HTTP標頭,您可以通過做在Java中獲得

request.getHeader("Accept-Language") 
5

[新的答案]

好吧,我想你做這樣的事情在小程序

URL url = new URL("http://www.whateverwebservice.com/passmealongthedata"); 
URLConnection urlconn = url.openConnection(); 

然後只需設置Accept-Language標題,然後再執行實際請求

//Assuming you know the language parameter you want to pass along you 
urlconnection.setRequestProperty("Accept-Language", "en-GB"); 
//or "en-GB,en;q=0.7" or similar 
.... 
continue with your program flow 
.... 

如果語言參數應該依賴於瀏覽器中設置的語言參數,那麼使用.Net方法會很有意義。當用戶在頁面上使用構建的小應用程序請求頁面時,插入下面描述的附加<parameter>標記。並修改該小程序以發送該值。希望我明白這一點。


[REMOVED]


[老答案】

假設你真的想確定一個applet在客戶端的瀏覽器版本:

這是不直接可能來自java AFAIK,因爲applet不必關心它運行的瀏覽器。但是你可以

  • 用JavaScript首先確定瀏覽器版本
  • 與javascirpt然後動態地編寫小程序標籤
  • ,並通過標籤

檢查Passing Parameters to Applets在通過瀏覽器版本的小應用程序瞭解如何做到這一點的示例。

+1

道歉的混亂! 我根本不懂Java中的任何知識。 我正在使用遺留應用程序,並且他們使用HttpContext.Current.Request.UserLanguages [0]來確定要使用的語言。 在JavaApplet中可能執行類似於HttpContext.Current.Request.UserLanguages [0]的操作嗎? 這javaapplet調用一個web服務,我需要通過像「en-GB」等..... 我試圖檢測到在web服務本身(.net 1.1),但沒有喜歡作爲HttpContext.Current.Request .UserLanguages [0]始終爲空。 我希望這個澄清一點 感謝您的時間 – 2009-11-04 09:59:58

+0

擴展答案 – jitter 2009-11-04 10:27:07