заголовок, отправленный curl, не содержит данных POST - PullRequest
2 голосов
/ 06 июля 2011

Функция:

function post_with_curl($target,$ref, $name ,$viewStateValue )
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $target) ;       // Target site

        curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace('\\','/', getcwd().'/'."cook.txt" )); //CHANGE THIS 
        curl_setopt($ch, CURLOPT_REFERER, $ref);  
        curl_setopt($ch, CURLOPT_TIMEOUT, CURL_TIMEOUT);    // Timeout
        curl_setopt($ch, CURLOPT_USERAGENT, WEBBOT_NAME); 
        curl_setopt ($ch, CURLOPT_POST, 1);


        $postfields = urlencode('__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=.'. $viewStateValue. '&__VIEWSTATEENCRYPTED=&ctl00$ContentPlaceHolder1$NameSearch1$CompanyNameTextBox1='.$name.'&ctl00$ContentPlaceHolder1$SearchButton=Search Now' ) ;
        curl_setopt ($ch, CURLOPT_POSTFIELDS, $postfields );

        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLINFO_HEADER_OUT, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);     // Follow redirects
        curl_setopt($ch, CURLOPT_MAXREDIRS, 4);             // Limit redirections to four
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);     // Return in string  
        $curled_page = curl_exec($ch);
        var_dump(curl_getinfo($ch , CURLINFO_HEADER_OUT)) ;
        curl_close($ch);
        return $curled_page ;
    }

Результат var_dump (curl_getinfo ($ ch, CURLINFO_HEADER_OUT)):

string 'POST /V2/COUNTY/Default.aspx HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Host: 198.173.15.31
Accept: */*
Referer: http://198.173.15.31/V2/COUNTY/
Cookie: ASP.NET_SessionId=pqfpur45akgy3l45ujq3fail
Content-Length: 1603
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

' (length=339)

На мой взгляд, заголовок (отправляемый curl?) Не содержит данных POST. Почему?

1 Ответ

2 голосов
/ 06 июля 2011

Это потому, что данные поста не являются частью заголовков HTTP-сообщения, а являются частью тела HTTP-сообщения.Если вы получаете заголовки, вы не получаете тело.Если вы хотите получить тело, вы должны получить тело сообщения.

Кстати, вам не нужно извлекать его, потому что вы уже создали его самостоятельно в переменной $postfields.Это просто публикуемые данные.

Или я неправильно понял, что вы на самом деле просите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...