C #: скачать .jpg с сайта .ashx - PullRequest
       35

C #: скачать .jpg с сайта .ashx

1 голос
/ 08 октября 2019

В настоящее время я пытаюсь загрузить изображение с сайта, который использует .ashx для управления загруженными изображениями. Сайт является «UploadHandler.ashx» и принимает такие параметры, как ширина, высота и идентификатор изображения. Когда я захожу туда в своем браузере, он автоматически загружает картинку для меня. Но когда я пытаюсь загрузить его с помощью HttpWebRequest и файлов cookie, он дает мне изображение размером 1 КБ, а если я изменяю его на .txt, это HTML, который говорит, что объект был перемещен, и направляет меня на страницу входа.

Мой текущий код для скачивания:

void DownloadImage(string onlinepath, string localpath)
    {
        Stream remoteStream = null;
        Stream localStream = null;
        HttpWebResponse response = null;

        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(onlinepath);
            request.AllowAutoRedirect = false;
            request.CookieContainer = cookie;
            response = (HttpWebResponse)request.GetResponse();
            request.ServerCertificateValidationCallback +=
                delegate (
                    object sender,
                    X509Certificate certificate,
                    X509Chain chain,
                    SslPolicyErrors sslPolicyErrors)
                {
                    return true;
                };
            if (request != null)
            {
                if (response != null)
                {
                    remoteStream = response.GetResponseStream();

                    localStream = File.Create(localpath);

                    byte[] buffer = new byte[1024];
                    int bytesRead;

                    do
                    {
                        bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

                        localStream.Write(buffer, 0, bytesRead);
                    } while (bytesRead > 0);
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            if (response != null) response.Close();
            if (remoteStream != null) remoteStream.Close();
            if (localStream != null) localStream.Close();
        }
    }

Текущий вывод в формате .txt:

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Login/Index">here</a>.</h2>
</body></html>
...