我试图将"Accept-Language" header附加到我正在获取的请求中,但是当我使用Charles Proxy检查请求时,那么标头不在那里。我像这样添加标题。HttpURLConnection中不尊重AddRequest
private HttpURLConnection getConnection(Uri uri) throws Exception {
URL url = new URL(uri.toString());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoInput(true);
urlConnection.addRequestProperty(ACCEPT_LANGUAGE_HEADER, LanguageProvider.getLanguage());
return urlConnection;
}
奇怪的是,如果我添加后记录requestproperties然后我可以看到它在HttpURLConnection中设置。为什么在发送之前将其删除?
UPDATE
我注意到下面的标题,其中自动添加
主机appname-api-staging.herokuapp.com
的User-Agent的Dalvik/1.6.0(Linux的; U; Android 4.3.1; Galaxy Nexus Build/JLS36I)
代理连接保持活动
我修改了代码,试图改变用户代理等等之类
URL url = new URL(uri.toString());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoInput(true);
urlConnection.addRequestProperty("User-Agent", "test");
urlConnection.setRequestProperty(ACCEPT_LANGUAGE_HEADER, LanguageProvider.getLanguage());
瞧这改变了主机头“测试”。添加新的请求属性和修改旧的请求属性有什么区别?
我使用httpurlconnection而不是httppost。这是推荐的类在Android – jiduvah 2014-10-31 13:59:05
mmh的更高版本...使用HttpClient,这样你就可以控制HTTP结果代码,标头,饼干,aaaaaall常见的东西 – eduyayo 2014-10-31 14:00:21
安卓团队建议使用httpurlconnection它有相同的和更多功能http://android-developers.blogspot.de/2011/09/androids-http-clients。html 我宁愿修复这个问题,而不是实施一个非常大的工作,围绕 – jiduvah 2014-10-31 14:04:52