Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
12个月前关闭。
Improve this question
我发现了一个问题。我有一台使用用户代理标头来标识与其连接的设备的服务器。但是,当我使用HttpURLConnection连接到服务器时,没有得到用户代理标头,但是当我与浏览器连接时,它发送了正确的用户代理。
为了进行测试,我使用的是回显服务器,该服务器以其在请求中找到的标头进行回复。
当我连接浏览器时,我得到:
例如:User-Agent:Mozilla / 5.0(Linux; U; Android 1.5; en-fr; HTC Hero Build / CUPCAKE)AppleWebKit / 528.5 +(KHTML,例如Gecko)Version / 3.1.2 Mobile Safari / 525.20.1 Up。链接/6.3.1.20.06.3.1.20.0。
但是当我使用UrlConnection通过代码连接时,我得到:
用户代理:不可用。
有谁知道我们我有不同的行为?我如何以浏览器相同的方式连接?
编辑:
我真正需要的不仅是User-Agent标头,我还需要一些特殊的标头(实际上是x-up-subno)。此标头由运算符的APN添加,但是由于某些原因,当我通过代码连接时,标头未添加到请求中。
从浏览器:
![java - android中的HttpURLConnection无法发送正确的User-Agent header-LMLPHP java - android中的HttpURLConnection无法发送正确的User-Agent header-LMLPHP]()
来自代码:
![java - android中的HttpURLConnection无法发送正确的User-Agent header-LMLPHP java - android中的HttpURLConnection无法发送正确的User-Agent header-LMLPHP]()
谢谢,
常用的Android浏览器使用WebKit。如果要设置WebKit的用户代理字符串,则要么使用静态值,要么从WebKit读取用户代理字符串。我没有尝试过,但是WebKit用户代理字符串可通过getUserAgentString() method of the WebSettings class在Android中使用。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
12个月前关闭。
Improve this question
我发现了一个问题。我有一台使用用户代理标头来标识与其连接的设备的服务器。但是,当我使用HttpURLConnection连接到服务器时,没有得到用户代理标头,但是当我与浏览器连接时,它发送了正确的用户代理。
为了进行测试,我使用的是回显服务器,该服务器以其在请求中找到的标头进行回复。
当我连接浏览器时,我得到:
例如:User-Agent:Mozilla / 5.0(Linux; U; Android 1.5; en-fr; HTC Hero Build / CUPCAKE)AppleWebKit / 528.5 +(KHTML,例如Gecko)Version / 3.1.2 Mobile Safari / 525.20.1 Up。链接/6.3.1.20.06.3.1.20.0。
但是当我使用UrlConnection通过代码连接时,我得到:
用户代理:不可用。
有谁知道我们我有不同的行为?我如何以浏览器相同的方式连接?
编辑:
我真正需要的不仅是User-Agent标头,我还需要一些特殊的标头(实际上是x-up-subno)。此标头由运算符的APN添加,但是由于某些原因,当我通过代码连接时,标头未添加到请求中。
从浏览器:
来自代码:
谢谢,
最佳答案
HTTP specification指出所有客户端都应该发送User-Agent标头。但是,它没有声明他们应该按照服务器希望的方式来标识客户端。因此,Android符合该规范,您对此无能为力。
最好的办法是使用setRequestProperty()方法尝试在请求中获取更好的用户代理值。不能保证它会起作用,但是有可能。需要以以下方式调用该方法:
connection.setRequestProperty("User-Agent","MyAppName/1.0");
常用的Android浏览器使用WebKit。如果要设置WebKit的用户代理字符串,则要么使用静态值,要么从WebKit读取用户代理字符串。我没有尝试过,但是WebKit用户代理字符串可通过getUserAgentString() method of the WebSettings class在Android中使用。