如何根据applet的请求设置Accept-Language标头

时间:2009-11-04 09:37:37

标签: java .net http-headers

我不熟悉Java,但我需要从applet中向远程Web服务发出请求。

Web服务(.Net 1.1)使用HttpContext.Current.Request.UserLanguages[0]来确定要使用的语言。但是这个成员的价值总是空的。

那么有没有办法传递Accept-Language标题以及类似“en-GB”的内容?

3 个答案:

答案 0 :(得分:5)

[新答案]

好的,我假设你在applet中做了类似的事情

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方法是有意义的。当用户使用页面上构建的applet请求页面时,插入下面描述的附加<parameter>标记。并修改applet以发送该值。希望我对此很清楚。


[REMOVED]


[OLD ANSWER]

假设您确实想要在applet中确定客户端的浏览器版本:

这不可能直接来自Java AFAIK,因为applet不应该关心它在哪个浏览器中运行。但你可以

  • 用javascript首先确定浏览器版本
  • 用javascirpt然后动态编写applet标签
  • 并通过标记
  • 将浏览器版本传递到applet

检查Passing Parameters to Applets以获取有关如何执行此操作的示例。

答案 1 :(得分:2)

这可能会查看Accept-Language HTTP标头,您可以通过

在Java中获取该标头
request.getHeader("Accept-Language")

答案 2 :(得分:2)

如果您知道applet正在运行的系统的默认语言(操作系统)已经足够好了,您可以从Applet#getLocale()获取它。如果您确实需要首选的浏览器语言,可以从ServletRequest#getLocale()在servlet容器中获取服务器端,并动态生成applet标记,将语言代码作为参数传递给applet。

相关问题