В общем такая ситуёвина( Нужно скачать картинку, http_get не подходит так-как для отображения картинки нужно подключать куки, реализовал это TCP-clientом, авторизуюсь, получаю куки с ними посылаю запрос на картинку, в результате получаю правильные ответы(такие дает браузер в месте с картинкой) от сервера типа
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: image/jpeg
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 16 Mar 2011 17:37:52 GMT
Content-Length: 7578
но уже несколько часов не могу выкачать сам массив с картинкой
Помогите советом, буду очень признателен
Прилагаю схемку, сделана не аккуратно но работает логин и пасс тестовые
code_22993.txt
Этот топик читают: Гость
Ответов: 95
Рейтинг: 10
|
|||
карма: 1 |
| ||
файлы: 1 | code_22993.txt [5.9KB] [153] |
Ответов: 294
Рейтинг: 64
|
|||
карма: 0 |
| ||
файлы: 1 | code_22999.txt [6.3KB] [179] |
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Quest писал(а): Можно так (на идеальность не претендую):Мдааа... Уж. Я не занимаюсь инетом, но все же -- я приводил ведь уже схемку. Вот адаптировано к схеме от bardak-a code_23001.txt |
|||
карма: 22 |
| ||
файлы: 1 | code_23001.txt [3.8KB] [212] |
Ответов: 294
Рейтинг: 64
|
|||
nesco писал(а): Мдааа... УжНу так предупреждал Quest писал(а): на идеальность не претендуюА все таки, (для себя интересно) чем в данном конкретном случае схема из этих 3 элементов:
Быстродействием? А можно разницу заметить "на глаз"? Или еще чем то? |
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Quest, я тебе скажу чем -- или ты никогда картинок с инэта не тянул, а они никогда не передаются в одном потоке сразу. На этом многие попадались. Потом делали шаровые глаза и спрашивали, а что это у меня картинка только кусок имеет, или вообще не грузится. Поставь дебаг и посмотри, что эта картинка передается несколькими частями. Я показал, как это надо делать правильно, с использованием накопителя потока и использованием Content-Length:
------------ Дoбавленo в 03.09: Quest, кстати, только что запустил твою схему, а она, увы, не работает, как я и предполагал. Не у всех MTU может быть больше размера картинки, учитывать это надо, кадрами она передается, кадрами, а не вся сразу. Да и HEX преобразование там зачем ------------ Дoбавленo в 03.18: Так что, Quest, не все корткое правильное |
|||
карма: 22 |
|
Ответов: 294
Рейтинг: 64
|
|||
Нет, что подход антинаучный - это я знал заранее.
Но думал, что в случае с заведомо "легкой" по размеру картинкой проблем не будет. Насчет неработоспособности... я никогда не выкладываю непроверенных схем (скрин приложен, обновлял картинку "стопицот" раз - без сбоев), а вот особенности сети - да, стоило учесть. преобразование в HEX там для поиска начала/конца jpeg. [flood] nesco писал(а): не все корткое правильноеНичего, лучше короткий и неправильный код, чем... )))[/flood] |
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Quest, начало контекста всегда начинается после двух переводов строки, или это новость для тебя
Quest писал(а): никогда не выкладываю непроверенных схемЯ не сомневаюсь в этом, как и в том, что я видел пропускную способность твоего канала и сразу нашел, где ты ошибся, да и не только ты. Не ты первый нарисовал такую схему, а другие на ней попались. Думаешь, я от хорошей жизни нарисовал накопитель потока, как пример Quest писал(а): а вот особенности сети - да, стоило учестьА вот это, батенька, в нашем деле самое главное. Надо учитывать не то, что есть у тебя, а то, что может быть у других |
|||
карма: 22 |
|
Ответов: 294
Рейтинг: 64
|
|||
О, кстати, вглядевшись пристальнее в основную схему (не в способ выцепления картинки), обнаружил в ней ошибки, приводящие к множественному запросу (4 раза), то есть нам ответ от сервера приходил на 4 запроса подряд.
Сохранялись 2 полноценные капчи (с разными цифрами) и две "битые". Можно убедиться, посмотрев, что запрашивается у сервера (нижний TCPClient в схеме) или сохраняя файлы на диск, приделав в конце что-то в этом роде:
Исправил, заодно удалил пару лишних связей (от точек Text у Edit-ов, ибо по событию onChange и так передается текст). Позволил себе внести маленькое дополнение в блок от nesco, а именно очищение массива, для возможности обновить капчу не выходя из программы. В общем вот:
|
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Quest писал(а): Позволил себе внести маленькое дополнение в блок от nesco, а именно очищение массива, для возможности обновить капчу не выходя из программыАга, заметил. А я все думал -- заметят или нет ------------ Дoбавленo в 08.53: Quest, у меня мой пример, с единственным запросом выдавал несколько потоков (от двух до семи) |
|||
карма: 22 |
|
Ответов: 95
Рейтинг: 10
|
|||
Спасибо огромное, вы мне очень помогли
|
|||
карма: 1 |
|
10