关于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; } }