由于.net4.0之后才支持host直接设置,.net3.5是设置不了host的,具体介绍可以到微软官网去看文档。
//用于设置host .net3.5 HttpWebRequest host属性不能设置
public class CusteredHeaderCollection : WebHeaderCollection
{
public bool HostHeaderValueReplaced { get; private set; }
public string ClusterUrl { get; private set; }
public CusteredHeaderCollection(string commonClusterUrl) : base()
{
if (string.IsNullOrEmpty("commonClusterUrl"))
throw new ArgumentNullException("commonClusterUrl");
this.ClusterUrl = commonClusterUrl;
}
public override string ToString()
{
this["Host"] = this.ClusterUrl;
string tmp = base.ToString();
this.HostHeaderValueReplaced = true;
return tmp;
}
}
HttpWebRequest request = null;
request = WebRequest.Create(“www.baidu.com”) as HttpWebRequest;
FieldInfo headersFieldInfo = request.GetType().GetField("_HttpRequestHeaders", System.Reflection.BindingFlags.NonPublic
| System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.GetField);
CusteredHeaderCollection WssHeaders = new CusteredHeaderCollection("fahuo.cainiao.com");
headersFieldInfo.SetValue(request, WssHeaders);