Java HttpUrlConnection重定向不使用原始连接的请求属性

Java HttpUrlConnection重定向不使用原始连接的请求属性,java,user-agent,Java,User Agent,设置连接的属性不会结转到重定向的连接 HttpURLConnection mConnection = (HttpURLConnection) url.openConnection(); mConnection = addRequestProperty("User-Agent", "Mozilla"); InputStream stream = mConnection.getInputStream(); 如果有302代码,mConnection将被重定向,但用户代理是“Java/1.5.0_2

设置连接的属性不会结转到重定向的连接

HttpURLConnection mConnection = (HttpURLConnection) url.openConnection();
mConnection = addRequestProperty("User-Agent", "Mozilla");

InputStream stream = mConnection.getInputStream();
如果有302代码,
mConnection
将被重定向,但用户代理是
“Java/1.5.0_28”


有什么建议如何处理这个问题吗?

没有改变,一开始就是这样

addRequestProperty()
不会覆盖默认值。改用
setRequestProperty()

HttpURLConnection mConnection = (HttpURLConnection) url.openConnection();
mConnection.setRequestProperty("User-Agent", "Mozilla");

您是想发布
mConnection.addRequestProperty()
而不是
mConnection=addRequestProperty()
?是的,应该是这样的。实际上,第一次连接使用add或set是正确的。当底层代码检测到重定向时,用户代理将恢复为默认值。不,不是。不能有多个用户代理字符串。“添加”不会替换已经存在的属性,而是添加一个。属性为每个连接。重定向时,会创建新连接,但不会将属性从旧连接复制到新连接。我使用了嗅探器来查看实际的数据包,所以我知道这正在发生。