POST-ответ содержит левые даннные

Discussion in 'PHP' started by ZagZag, 15 Jun 2009.

  1. ZagZag

    ZagZag Elder - Старейшина

    Joined:
    22 Feb 2007
    Messages:
    149
    Likes Received:
    22
    Reputations:
    1
    При посылке серверу POST-запроса, от него приходит ответ, в котором помимо самих данных есть служебная информация.
    Вот пример ответа:
    Code:
    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);
    }
     
  2. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    указывай размер принимаемого ответа и режь всё ненужное
    PHP:
    while ( ! feof $fp ) ) {
            
    $line fgets $fp128 );
    }
     
  3. SQLHACK

    SQLHACK Остались только слоны

    Joined:
    27 Sep 2006
    Messages:
    437
    Likes Received:
    372
    Reputations:
    407
    ну это не верно.

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

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

    ZagZag Elder - Старейшина

    Joined:
    22 Feb 2007
    Messages:
    149
    Likes Received:
    22
    Reputations:
    1
    SQLHACK, спасибо. Наверное на первом варианте остановлюсь.