为什么HttpClient不发送指定的Accept-Language字段?

时间:2013-04-06 19:35:42

标签: java internationalization apache-httpcomponents

在我的项目中,我使用Apache的HttpComponents连接到服务器。以下代码创建了HttpClient。

HttpParams params = new BasicHttpParams();
params.setParameter("http.language.Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
HttpProtocolParams.setUserAgent(params, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1003.1 Safari/535.19 Awesomium/1.7.1");

DefaultHttpClient client = new DefaultHttpClient(params);

但是当我执行请求时,不会发送Accept-Language字段。如下:

2013/04/06 20:52:07:129 MESZ [DEBUG] headers - >> GET /ws/search.json?text=&levelmin=0&levelmax=80&offset=1 HTTP/1.1
2013/04/06 20:52:07:129 MESZ [DEBUG] headers - >> Host: tradingpost-live.ncplatform.net
2013/04/06 20:52:07:129 MESZ [DEBUG] headers - >> Connection: Keep-Alive
2013/04/06 20:52:07:129 MESZ [DEBUG] headers - >> User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1003.1 Safari/535.19 Awesomium/1.7.1
2013/04/06 20:52:07:129 MESZ [DEBUG] headers - >> Cookie: s=abcdefg

这是一个错误还是我做错了什么?我只想拥有一个“全局”接受语言字段(对于我从一个客户端发送的所有请求)。

欢迎任何帮助

1 个答案:

答案 0 :(得分:1)

我无法解决这个问题,但是对于发出同样问题的人来说,这是一个解决方法: 创建一个像

这样的中心方法
void prepareHttpRequest(HttpRequest request){
    request.addHeader("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
}

您必须为您执行的每个POST或GET请求执行此操作。我知道它不是很优雅,但是我唯一的解决方案,