Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   POST-ответ содержит левые даннные (https://forum.antichat.xyz/showthread.php?t=125337)

ZagZag 15.06.2009 10:46

POST-ответ содержит левые даннные
 
При посылке серверу POST-запроса, от него приходит ответ, в котором помимо самих данных есть служебная информация.
Вот пример ответа:
Код:

HTTP/1.1 200 OK
Date: Mon, 15 Jun 2009 06:37:15 GMT
Server: Apache/1.3.41 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

4f
<HTML>
        <BODY>
                <DIV id='d1'>
                        array(0) {
}
                </DIV>
        </BODY>
</HTML>

0

Интересуют значение 4f и 0
Ну понятно что 4f - это длина блока, а 0, видимо, его окончание. Но как их отфильтровать? Как это дело грамотно обработать без танцев с бубном?
Во всех применрах что я нашел, получение ответа сводится к
PHP код:

$Response '';
while (!
feof($sock)) {
    
$Response .= fgets($sock);



Sharky 15.06.2009 11:31

указывай размер принимаемого ответа и режь всё ненужное
PHP код:

while ( ! feof $fp ) ) {
        
$line fgets $fp128 );



SQLHACK 15.06.2009 11:34

Цитата:

Сообщение от Sharky
указывай размер принимаемого ответа и режь всё ненужное
PHP код:

while ( ! feof $fp ) ) {
        
$line fgets $fp128 );



ну это не верно.

А правильно будет так.
Вариант 1.
Посылать запрос не HTTP 1.1 а HTTP 1.0
тогда в ответе не будет данных значений.

Вариант 2.
Обрабатывать данные после получения пакета, по стандартам RFC, то есть искать первый \r\n\r\n. считывать длину пакета по маске [a-z0-9] в твоем случае это 4F, брать это кол-во байт, и отсчитывать их, от следующего за числом переводом строки, там повторять это же действие, пока число не станет равным 0.

ZagZag 15.06.2009 11:54

SQLHACK, спасибо. Наверное на первом варианте остановлюсь.


Время: 19:59