Java HttpURLConnection:它可以应付重复的标头名称吗?
时间:2020-03-06 14:57:52 来源:igfitidea点击:
我正在Selenium-rc代理服务器中调试一些代码。罪魁祸首似乎是HttpURLConnection对象,其用于获取HTTP标头的接口无法应对重复的标头名称,例如:
Set-Cookie: foo=foo; Path=/ Set-Cookie: bar=bar; Path=/
通过HttpURLConnection(使用getHeaderField(int n)和getHeaderFieldKey(int n))获取标头的方式似乎正在导致我的第二个cookie丢失。我的问题是
- 确实,HttpURLConnection本身无法应对它,并且
- 如果是这样,是否有解决方法?
解决方案
无需实际尝试(不记得自己处理过该主题),还有从UrlConnection继承的getHeaderFields。这会满足需求吗?
我建议的解决方法是完全不使用HttpUtilConnection,这是粗略且不直观的,而是改用commons-httpclient。
http://hc.apache.org/httpclient-3.x/
好的,我找到了问题,并找到了原始问题的答案。基本上,我使用的Cookie实现(Python的默认Cookie Lib)使用\ r \ n来分隔不同的Set-Cookie标头(如假定为\ n),这使HttpUrlConnection感到困惑,并导致它在该分隔符的首次出现时停止(我猜想它会停在第一个空白行)。因此,第一个问题的答案是:是的,它可以应付重复的标头名称,但以另一种方式存在问题。目前修复python库是一个可行的解决方法,但由于我们不拥有该库,因此无法长期使用。我确信使用httpclient库是一个明智的选择,但是我希望有一个需要较少工作的解决方案。所以我还不知道该怎么办。