C# winform .net3.5 HttpWebRequest 使用host字段

由于.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);

你可能感兴趣的:(C#,c#,.net,java)