Я пытаюсь получить доступ к защищенному URL-адресу через веб-клиент и получить несколько ошибок. Общая цель - загрузить изображение с защищенного url.Как получить доступ к защищенному URL-адресу с помощью webclient
Обратите внимание, что ранее я смог загрузить изображение из репозитория с помощью http, и теперь у них есть принудительный (security) https в том же URL-адресе. У нас есть консольное приложение, которое работает на периодической основе и вытаскивает изображение с сервера и сохраняет локально.
Просьба сообщить, что я делаю неправильно? или чего не хватает?
Ниже приведены вопросы, с которыми я столкнулся.
- ///, если я использую раздел кода 1 ... Я получаю сообщение об ошибке, поскольку параметр недействителен.
- /// если я использую раздел кода 2 ... Файл будет сохранен на местном, но получить сообщение "Файл, как представляется, поврежден или большой и не смогли открыть.
Раздел 1 и 2 приведены ниже.
using (WebClient webClient = new WebClient())
{
webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
webClient.Credentials = new NetworkCredential("id", "pwd"); // if credentials are wrong...still I get the imageByte
/// section 1 - if I use this code... I get error saying Parameter is not valid.
// ----------------------------- Start --------------------------------
imageByte = webClient.DownloadData("https://someurl/source/abcd.jpeg");
////Initialize image variable
Image newImage;
////Read image data into a memory stream
using (MemoryStream ms = new MemoryStream(imageByte, 0, imageByte.Length, true))
{
ms.Write(imageByte, 0, imageByte.Length);
//Set image variable value using memory stream.
newImage = Image.FromStream(ms, true, false); // Throws error at this line saying that parameter is not valid.
}
newImage.Save(@"location\image.jpeg");
// ----------------------------- End --------------------------------
/// section 2 - if I use this code... File gets saved to local but get a message " File appear to be corrupt or large and not able to open.
// ----------------------------- Start --------------------------------
webClient.DownloadFile("https://someurl/source/abcd.jpeg", @"location\image.jpeg");
// ----------------------------- End --------------------------------
}
Спасибо за ввод. Я попытался получить информацию из заголовка ответа и не увидел никакой ошибки как таковой. Я получил меньше ответа.Pragma = no-cache Cache-Control = no-cache, no-store Expires = Thu, 07, 2016 00:00:00 GMT Set-Cookie = JSESSIONID = "некоторое значение GUID"; Path =/ABCD /; Закрепить; HttpOnly Сервер = Apache Content-Type = текст/html; кодировка = UTF-8 Content-Language = EN-US Transfer-Encoding = Chunked Варах = Accept-Encoding Дата = Пт, 12,2016 То, что я мог видеть, истекает, устанавливается на вчерашнюю дату ... Может быть, это проблема? – Amit
То, что выглядит подозрительно, это Content-Type = text/html - я ожидаю, что это будет изображение/jpeg. Вы пытались открыть сохраненный файл с помощью текстового редактора (тело ответа должно быть в тексте UTF-8)? – Kel
вы правы .. когда я открываю файл в текстовом редакторе ... он работал как шарм ... и вот почему я не смог открыть файл в любом редакторе изображений ... поэтому виновником здесь является Content- Type = text/html ... любая идея, как мы можем получить тип как изображение? – Amit