如题,如果是从网站上获取普通的静态图片(即路径最后就含有.jpg等),直接用HttpWebRequest或者WebClitnt类
string strUrl="http://static.cnblogs.com/images/logo_small.gif"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl); ... HttpWebResponse res = request.GetResponse() as HttpWebResponse; StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
类似这样就可以得到静态图片流,但像12306验证码这种动态图片就无法这样获取,下面是12306验证码的图片的地址:https://dynamic.12306.cn/otsweb/passCodeNewAction.do?module=login&rand=sjrand
每刷新一次就会得到一张新的图片,但是URL不会发生任何变化,请问如何获取这样的图片?先行谢过~~
你直接获取不就是了。把你的url换成12306的即可,同样可以获取图片,只不过每次获取的都不一样而已。
这样直接获取是得不到图片的,这个我早试过了,不信你可以试试
@SilveryBullet:楼下正解。
@幻天芒: 再不济,可以用WebBrower控件实现。
@幻天芒: 这不是不想用这个最不济的法子么~~
@SilveryBullet: 我看你用了https的访问方式,难道这种获取不到图片??X509证书加上。
因为你用的是https的协议。换成http的。
这个倒不是问题,Https是因为12306自己的网站用的SSL,这个我们没办法,加一串 System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; // **** Always accept };
这个就可以了。主要因为他那验证码图片是动态生成的,不是固定URI的静态图片
动态生成的,在你代码请求时木有生成吧
验证码不都是动态生成的?