关于http请求指定本地ip

static void Main(string[] args)
{
     //ssl证书验证问题(没有校验)
     ServicePointManager.ServerCertificateValidationCallback = (sender,  certificate, chain, sslPolicyErrors) => true;
     var hostname = Dns.GetHostName();//获取本地主机名
     var addresses = Dns.GetHostAddresses(hostname);//返回指定主机的 Internet 协议 (IP) 地址
      foreach (var address in addresses)
      {
                if (address.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork) continue;//version 4.0
                Console.WriteLine(address);
                var client = new MyWebClient(address);
                var rlt = client.UploadString("https://t2.ipyy.net/a.aspx", "");
                Console.WriteLine(rlt);
                Console.WriteLine("----------------------------------");
        }
            Console.WriteLine("r.ipyy.net");
            var ipr = Dns.GetHostAddresses("r.ipyy.net");
            var rc = new MyWebClient(ipr.First());
            var r = rc.UploadString("https://t2.ipyy.net/a.aspx", "");
            Console.WriteLine(r);
            Console.ReadKey();

        }
public class MyWebClient : WebClient
    {
        private IPAddress ipAddress;

        public MyWebClient(IPAddress ipAddress)
        {
            this.ipAddress = ipAddress;
        }

        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = (WebRequest)base.GetWebRequest(address);

            ((HttpWebRequest)request).ServicePoint.BindIPEndPointDelegate += (servicePoint, remoteEndPoint, retryCount) =>
            {
                return new IPEndPoint(ipAddress, 0);
               // IPAddress ipAddress = IPAddress.Parse("192.168.1.82");
            };

            return request;
        }
    }

 

posted on 2018-02-01 09:58  跨界农民工  阅读(1204)  评论(0编辑  收藏  举报

导航