2009-11-04 76 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