#1 02.01.06 21:29
Как отделить данные(картинку) от заголовка GET-запроса?
Сначала я пробовал соединение через сокет ан одном портале-все было нормально, потому что при запросе "GET /image.gif" возвращался ответ, где было поле Content-Lenght-замерял длину ответа, вычитал Content-Lenght и читал с этого места и до конца-потом записывал поток в файл и получалась картинка.
Потом перешел на друой портал-на Apache(первый был на IIS-не знаю зависит ли от этого?) и поля Content-Lenght не стало в ответе. Конечно, когда стандарт заранее известен-gif например, можно отлавливать стартовое слово GIF89.
ну а если надо просто поток "выловить"(не картинку)??
и еще: какой размер буфера оптимальнее использовать при dial-up`е?(у меня-512, но почти ничем не отличается от 1024 при выкачаивании картинок)и обязательно ли он должен быть степени двойки?
Заранее очень признателен!
Offline
#5 06.01.06 23:43
Re: Как отделить данные(картинку) от заголовка GET-запроса?
Не-нифига не помогло. Вот что получается:
[i]Expires: Thu, 01 Dec 1994 16:00:00 GMT\r\n
Cache-Control: no-cache\r\n
Pragma: no-cache\r\n
Connection: close\r\n
Transfer-Encoding: chunked\r\n
Content-Type: image/png\r\n
\r\n
e5 \r\n
\tPNG\r\n\n\0\0\0\rIHDR\0\0\02\0\0\0\0\0\0Tuq\0\0\0PLTE WWWJJJ###dddqqq000===Y8fk\0\0\0IDATcPBpfAAA\a6F\t\f\" bxMc,hl(N&X@,\n$f1H0\b2p\b10\b0\b04&cZ\"8Cc4G\t\t\bSJQepFv\r'SXDJ ncdh, B4B jF\t\nxh`\0Gr(o\b&s\0\0\0\0IEND.B`\r\n0\r\n\r\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\[/
А файл должен начинаться с \tPNG. Так по какому признаку выловить начало данных, кроме как тупым поиском заранее просмотренного начала файла??
Тем более, что при тестировании пару дней назад хотя бы была строчка с content-lenth(((-можно было с конца прочесть.
Offline
#8 07.01.06 22:19
Re: Как отделить данные(картинку) от заголовка GET-запроса?
я уж думал у меня с головой плохо-еще раз проверил, на хостеле и на сенде-всё та же фигня. наверное, где-то что-то в документации пропустил:(
ЗЫ а про сенд.нск ничего плохого не подумайте-я так, для опыта, а не для массового смс-спама:)
Offline
#9 09.01.06 00:10
Re: Как отделить данные(картинку) от заголовка GET-запроса?
Вот тебе пример исходника на php который сохраняет твою картинку в файл
<?php
$request="GET http://send.nsk.ru/label.php HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Accept: */*
Referer: http://send.nsk.ru/
Pragma: no-cache
Cache-Control: no-cache\n\n";
//--------------------------------------------------------
$fp = fsockopen("send.nsk.ru", 80,$errno, $errstr, 10);//Открываем сокет
stream_set_timeout($fp,30);//Устанавливаем время ожидания данных
if (!$fp) {//Если не был открыт сокет, то...
die("Unable to open<br>\n$errstr");//Выходим
}
fwrite($fp, $request);//Отправляем запрос
$file=fopen("./label.gif","w");//Открываем файл для сохранения данных
$mode=0;//Устанавливаем режим ожидания данных
while($out=fread($fp,4096))
{
//echo $out;
if($mode==0)// Если режим ожидания, то...
{
$pos=strpos($out,"\r\n\r\n");
if($pos!==false)//Если header кончился
{
$mode=1;//Режим = прием
$out=substr($out,$pos+4); //откидываем header
}
}
if($mode==1)//Если режим приема данных, то...
fwrite($file,$out);//пишем в файл
}
fclose($fp);
fclose($file);
echo '<img src="./label.gif">';
?>
Offline
#10 09.01.06 00:10
#11 01.02.06 22:01
Re: Как отделить данные(картинку) от заголовка GET-запроса?
Извини-комп был в ремонте, а на работе хостел закрыт для доступа,)
НЕ, ну на пхп я тоже могу-это достаточно гибкая штука в плане потоков приема\передачи.
Но пхп-ый код на ASP.NET хостинг не зальешь-там VBscript или C# нужны.
Не знаешь, откуда все-таки береться эта e5 \r\n?
Offline

