首页 新闻 会员 周边 捐助

C# 如何获取12306验证码图片(图片是动态生成的)

0
悬赏园豆:5 [待解决问题]

如题,如果是从网站上获取普通的静态图片(即路径最后就含有.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不会发生任何变化,请问如何获取这样的图片?先行谢过~~

Zeek的主页 Zeek | 初学一级 | 园豆:197
提问于:2013-10-16 12:48
< >
分享
所有回答(4)
0

你直接获取不就是了。把你的url换成12306的即可,同样可以获取图片,只不过每次获取的都不一样而已。

幻天芒 | 园豆:37207 (高人七级) | 2013-10-16 13:09

这样直接获取是得不到图片的,这个我早试过了,不信你可以试试

支持(0) 反对(0) Zeek | 园豆:197 (初学一级) | 2013-10-16 15:17

@SilveryBullet:楼下正解。 

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2013-10-16 15:42

@幻天芒: 再不济,可以用WebBrower控件实现。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2013-10-16 15:43

@幻天芒: 这不是不想用这个最不济的法子么~~

支持(0) 反对(0) Zeek | 园豆:197 (初学一级) | 2013-10-16 15:49

@SilveryBullet: 我看你用了https的访问方式,难道这种获取不到图片??X509证书加上。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2013-10-16 16:56
0

因为你用的是https的协议。换成http的。

FangMu | 园豆:332 (菜鸟二级) | 2013-10-16 15:32

这个倒不是问题,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的静态图片

支持(0) 反对(0) Zeek | 园豆:197 (初学一级) | 2013-10-16 15:48
0

动态生成的,在你代码请求时木有生成吧

平常心队长 | 园豆:1113 (小虾三级) | 2013-10-17 08:55
0

验证码不都是动态生成的?

geass.. | 园豆:1821 (小虾三级) | 2013-10-18 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册