获得交行的登陆验证码文件获得不对,望高手指教
{
string Path = "c:\\1.bmp";
File.Delete(Path);
FileStream fs = new FileStream(Path, FileMode.Create);
//实例化一个StreamWriter-->与fs相关联
StreamWriter sw = new StreamWriter(fs);
//开始写入
sw.Write(m_Data,0, L);
//清空缓冲区
sw.Flush();
//关闭流
sw.Close();
fs.Close();
}
private void button5_Click(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
string url ="https://pbank.95559.com.cn/personbank/DynImage";// "https://www.softlayer.com/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);// Encoding.GetEncoding(encoding));此处使用UTF-8也是错误
//Console.Write(reader.ReadToEnd());
int bytes = 0;
char[] temp = new char[4096*10];
int nPos = 0;
while ((bytes = reader.Read(temp, nPos, temp.Length-nPos)) != 0)
{
//requestStream.Write(temp, 0, bytes);
nPos += bytes;
}
WriteImg(temp, nPos); response.Close();
} public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { // Always accept
Console.WriteLine("accept" + certificate.GetName());
return true; //总是接受
} 获得验证码文件错误
{
string Path = "c:\\1.bmp";
File.Delete(Path);
FileStream fs = new FileStream(Path, FileMode.Create);
//实例化一个StreamWriter-->与fs相关联
StreamWriter sw = new StreamWriter(fs);
//开始写入
sw.Write(m_Data,0, L);
//清空缓冲区
sw.Flush();
//关闭流
sw.Close();
fs.Close();
}
private void button5_Click(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
string url ="https://pbank.95559.com.cn/personbank/DynImage";// "https://www.softlayer.com/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);// Encoding.GetEncoding(encoding));此处使用UTF-8也是错误
//Console.Write(reader.ReadToEnd());
int bytes = 0;
char[] temp = new char[4096*10];
int nPos = 0;
while ((bytes = reader.Read(temp, nPos, temp.Length-nPos)) != 0)
{
//requestStream.Write(temp, 0, bytes);
nPos += bytes;
}
WriteImg(temp, nPos); response.Close();
} public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { // Always accept
Console.WriteLine("accept" + certificate.GetName());
return true; //总是接受
} 获得验证码文件错误
{
string Path = "c:\\1.bmp";
File.Delete(Path);
FileStream fs = new FileStream(Path, FileMode.Create);
//实例化一个StreamWriter-->与fs相关联
StreamWriter sw = new StreamWriter(fs);
//开始写入
sw.Write(m_Data,0, L);
//清空缓冲区
sw.Flush();
//关闭流
sw.Close();
fs.Close();
}
private void button5_Click(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
string url ="https://pbank.95559.com.cn/personbank/DynImage";// "https://www.softlayer.com/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);// Encoding.GetEncoding(encoding));此处使用UTF-8也是错误
//Console.Write(reader.ReadToEnd());
int bytes = 0;
char[] temp = new char[4096*10];
int nPos = 0;
while ((bytes = reader.Read(temp, nPos, temp.Length-nPos)) != 0)
{
//requestStream.Write(temp, 0, bytes);
nPos += bytes;
}
WriteImg(temp, nPos); response.Close();
} public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { // Always accept
Console.WriteLine("accept" + certificate.GetName());
return true; //总是接受
}
/// /// 生成验证图片
/// /// </summary>
/// /// <param name="checkCode">验证字符</param>
protected void CreateImages(string checkCode)
{
int iwidth = (int)(checkCode.Length * 15);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 30);
Graphics g = Graphics.FromImage(image);
g.Clear(Color.LightCyan);
//定义颜色.LightGray
//Color[] c = { Color.LightGray, Color.LightGray, Color.LightGray, Color.LightGray, Color.LightGray, Color.LightGray, Color.LightGray, Color.LightGray, Color.LightGray};
//Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple, Color.SkyBlue };
Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Blue, Color.Brown, Color.DarkCyan, Color.Purple, Color.SkyBlue };
//定义字体
// string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体", "Comic Sans MS" };
string[] font = { "宋体", "黑体", "宋体", "黑体", "宋体", "黑体" };
Random rand = new Random();
//随机输出噪点
for (int i = 0; i < 20; i++)
{
int x = rand.Next(image.Width);
int y = rand.Next(image.Height);
g.DrawPie(new Pen(Color.LightGray, 0), x, y, 6, 6, 1, 1);
} //输出不同字体和颜色的验证码字符
for (int i = 0; i < checkCode.Length; i++)
{
int cindex = rand.Next(7);
int findex = rand.Next(6);
Font _font = new System.Drawing.Font(font[findex], 14, System.Drawing.FontStyle.Bold);
Brush b = new System.Drawing.SolidBrush(c[cindex]);
int ii = 6;
if ((i + 1) % 2 == 0)
{
ii = 2;
}
g.DrawString(checkCode.Substring(i, 1), _font, b, 3 + (i * 12), ii);
} //画一个边框
g.DrawRectangle(new Pen(Color.Red, 0), 100, 0, image.Width - 1, image.Height - 1);
//输出到浏览器
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
image.Dispose();
} #endregion #region 产生随机验证码 /// <summary>
/// 生成随机字母与数字
/// </summary>
/// <param name="Length">生成长度</param>
/// <param name="Sleep">是否要在生成前将当前线程阻止以避免重复</param>
/// <returns></returns>
public string Str(int Length, bool Sleep)
{
if (Sleep)
System.Threading.Thread.Sleep(3);
char[] Pattern = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,
'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z'};
string result = "";
int n = Pattern.Length;
System.Random random = new Random(~unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < Length; i++)
{
int rnd = random.Next(0, n);
result += Pattern[rnd];
}
return result;
}
private void button5_Click(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
string url ="https://pbank.95559.com.cn/personbank/DynImage";// "https://www.softlayer.com/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);// Encoding.GetEncoding(encoding));此处使用UTF-8也是错误
//Console.Write(reader.ReadToEnd());
int bytes = 0;
char[] temp = new char[4096*10];
int nPos = 0;
while ((bytes = reader.Read(temp, nPos, temp.Length-nPos)) != 0)
{
//requestStream.Write(temp, 0, bytes);
nPos += bytes;
}
WriteImg(temp, nPos); //生成获得验证码文件 生成的文件查看是错误的
response.Close();
}private void WriteImg(char[] m_Data,int L)
{
string Path = "c:\\1.bmp";
File.Delete(Path);
FileStream fs = new FileStream(Path, FileMode.Create);
//实例化一个StreamWriter-->与fs相关联
StreamWriter sw = new StreamWriter(fs);
//开始写入
sw.Write(m_Data,0, L);
//清空缓冲区
sw.Flush();
//关闭流
sw.Close();
fs.Close();
}
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { // Always accept
Console.WriteLine("accept" + certificate.GetName());
return true; //总是接受
}
最开始的时候,他说他使用的https,好吧,我问他要了个数字证书。
数字证书弄完了,好了,给我反馈信息了,但是又给我来了个后续页面的按钮。问题多多,最终项目放弃了。。直接改用web去跟他们沟通了。