获得交行的登陆验证码文件获得不对,望高手指教
 {
            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; //总是接受
} 获得验证码文件错误

解决方案 »

  1.   

    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();
      }
     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; //总是接受
    }  
      

  2.   

    /// <summary>
        /// /// 生成验证图片
        /// /// </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;
        }
      

  3.   

    以上代码是获得交通银行的登陆验证码文件获得不对,望高手指教
    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; //总是接受
    }   
      

  4.   

    交行的我以前做过。
    最开始的时候,他说他使用的https,好吧,我问他要了个数字证书。
    数字证书弄完了,好了,给我反馈信息了,但是又给我来了个后续页面的按钮。问题多多,最终项目放弃了。。直接改用web去跟他们沟通了。