2011-07-06 67 views
2

功能:頭不包含POST數據

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數據。爲什麼?

回答

2

這是因爲發佈數據不是HTTP消息標題的一部分,而是HTTP消息主體的一部分。如果你得到標題,你不會得到身體。如果你想檢索正文,你必須檢索郵件正文。

順便說一句,你不需要檢索它,因爲你已經創建它自己到$postfields變量。這僅僅是發佈的數據。

還是我誤解了你實際要求的內容?

+0

好吧,我如何看到curl發送的HTTP消息體?我只想看看curl和服務器之間交換的確切數據,然後將它與服務器和firefox之間交換的數據進行比較。 –

+0

據我所知,PHP curl版本不提供這樣的功能。我甚至爲此迅速掃描了手冊。我認爲它會像你創建的字符串一樣傳遞,但我不會100%知道。但我認爲這很可能。作爲替代方案,您可以嗅探網絡流量並在那裏觀察請求。這會讓你100%滿意,並且可以與每個HTTP客戶端一起工作。 – hakre

+0

我會嘗試嗅探..感謝您的時間 –