今天在开发Android程序时用HttpURLConnection .setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");方法发送User-Agent给服务器,结果发现服务器不能收到的User Agent是类似于Dalvik/1.1.0(Linux; U; Android 3.4b5 Build/FCF)的字符串,而不是我发送的内容。
经过阅读源代码,我发现在RuntimeInit的commonInit方法里面有
/*
* Sets the default HTTP User-Agent used by HttpURLConnection.*/
String userAgent = getDefaultUserAgent();
System.setProperty("http.agent", userAgent);
两句代码,getDefaultUserAgent()方法构建了Dalvik/1.1.0(Linux; U; Android 3.4b5 Build/FCF)的字符串,并放到了http.agent的属性里面。于是我调用了System.setProperty("http.agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");方法把我要发送的User Agent正确发送到了服务器端,解决了问题。