0

http://www.vatgia.com/home/security_code.php?0.6400910824330888から画像のキャプチャ コードをダウンロードしたい のですが、ログイン時にのみキャプチャ コードが表示されます。Web クライアントを使用してダウンロードしましたが、ダウンロード時にリクエスト Cookie ログインを追加できません。

  System.Net.WebClient wc = new System.Net.WebClient();
  wc.Credentials = new System.Net.NetworkCredential("minhtrung3811", "Nguyen123");//Authenticates to the website - Call it only if the image url needs authentication first
  wc.DownloadFile(url, "d:\\downloadedImage.jpg"); //Downloads the imageURL to the local  file downloadedImage.jpg

私を助けてください?

質問を更新します!

ありがとう@Joseph、私は持っています

private  void Post(string url)
        {
            using (client = new WebClientWithCookies())
            {
                client.OpenReadCompleted +=
                   new OpenReadCompletedEventHandler(client_OpenReadCompleted);
                var uri = new Uri(url, UriKind.RelativeOrAbsolute);
                client.Headers.Add("Cookie", _cookies);
                client.OpenReadAsync(uri);
            }
        }

および方法 ダウンロードファイル

public static int DownloadFile(String remoteFilename,
                               String localFilename)
        {
            // Function will return the number of bytes processed
            // to the caller. Initialize to 0 here.
            int bytesProcessed = 0;

            // Assign values to these objects here so that they can
            // be referenced in the finally block
            Stream remoteStream = null;
            Stream localStream = null;
            WebResponse response = null;

            // Use a try/catch/finally block as both the WebRequest and Stream
            // classes throw exceptions upon error
            try
            {
                // Create a request for the specified remote file name
                WebRequest request = WebRequest.Create(remoteFilename);
                if (request != null)
                {
                    // Send the request to the server and retrieve the
                    // WebResponse object 
                    response = request.GetResponse();
                    if (response != null)
                    {
                        // Once the WebResponse object has been retrieved,
                        // get the stream object associated with the response's data
                        remoteStream = response.GetResponseStream();

                        // Create the local file
                        localStream = File.Create(localFilename);

                        // Allocate a 1k buffer
                        byte[] buffer = new byte[1024];
                        int bytesRead;

                        // Simple do/while loop to read from stream until
                        // no bytes are returned
                        do
                        {
                            // Read data (up to 1k) from the stream
                            bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

                            // Write the data to the local file
                            localStream.Write(buffer, 0, bytesRead);

                            // Increment total bytes processed
                            bytesProcessed += bytesRead;
                        } while (bytesRead > 0);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                // Close the response and streams objects here 
                // to make sure they're closed even if an exception
                // is thrown at some point
                if (response != null) response.Close();
                if (remoteStream != null) remoteStream.Close();
                if (localStream != null) localStream.Close();
            }

            // Return total bytes processed to caller.
            return bytesProcessed;
        }

画像ファイルをダウンロードします。....

String url = "link image captcha code";
Post(url);
Download_file(url, "D:\\IMAGE.PNG");

しかし、私は画像のキャプチャコードを取得できません:(

4

1 に答える 1

1

すべては、HTTP 要求でユーザー名/パスワードを提供したときに Web サイトがユーザー名/パスワードを解釈するかどうかによって異なります。この記事WebRequest と WebResponseを見てください。

実際の認証を使用するバージョンにアクセスできない限り、トークンを保持できるように CookieContainer を持っている間は、おそらく HttpWebRequest とサイトへの偽の POST 要求を使用する必要があります。次に、そのトークンを取得リクエストに含めて、画像ファイルをダウンロードできます

于 2013-07-17T04:21:13.320 に答える