2011-03-24 98 views
0

我試圖做一些curl'ing從PHPPHP中的curl url?

我:

$url="http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp&asin=&dpci=".$arriPadSKU[$counter]."&zipcode=".$vZip."&city=&state="; 

$curl_handle=curl_init(); 
curl_setopt($curl_handle,CURLOPT_URL, '$url'); 
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); 
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); 

$buffer = curl_exec($curl_handle); 

curl_close($curl_handle); 

$ URL生成一個URL喜歡這一點,它在瀏覽器的工作原理:

http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp&asin=&dpci=057-10-1830&zipcode=95128&city=&state=

但是,我似乎沒有得到我的捲曲調用結果,我不認爲任何結果返回。如果我查看$ buffer中的結果,我看不到像我在頁面上那樣的數據。

我不能像這樣設置一個$ url到CURLOPT_URL嗎?

我將如何構建這個從命令行這個工程:

echo "iPad 2 Wi-Fi White 16GB: "; curl -s --data "_dyncharset=ISO-8859-1&asin=&dpci=057-10-1839&zipcode=95128&city=&state=" http://sites.target.com/site/en/spot/mobile _fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp

+0

你試過urlencode()'該網址? – DanMan 2011-03-24 18:03:38

+2

您沒有正確傳遞網址 使用雙引號或根本不使用它們 $ curl_handle = curl_init(); curl_setopt($ curl_handle,CURLOPT_URL,「$ url」); – Fivell 2011-03-24 18:05:07

+0

好的,所以curl執行,但我得到一個錯誤頁面與結果 – Tomd 2011-03-24 18:20:41

回答

3

是你封閉$問題字符串文字中的url。

如果你運行curl_getinfo($ curl_handle);你會看到它所請求的url是http:// $ url,這顯然是無效的。

Array 
(
[url] => http://$url 
[content_type] => 
[http_code] => 0 
[header_size] => 0 
[request_size] => 0 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 0 
[namelookup_time] => 0 
[connect_time] => 0 
[pretransfer_time] => 0 
[size_upload] => 0 
[size_download] => 0 
[speed_download] => 0 
[speed_upload] => 0 
[download_content_length] => -1 
[upload_content_length] => -1 
[starttransfer_time] => 0 
[redirect_time] => 0 
[certinfo] => Array 
    (
    ) 
) 

編輯

這裏是更新的代碼我用來測試:

<?php 

$url="http://sites.target.com/site/en/spot/mobile_fiats_results.jsp?_DARGS=/site/en/spot/mobile_fiats.jsp&asin=&dpci=057-10-1830&zipcode=95128&city=&state="; 

$curl_handle=curl_init(); 
curl_setopt($curl_handle,CURLOPT_URL, $url); 
//curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); 
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); 

$buffer = curl_exec($curl_handle); 

//curl_close($curl_handle); 

print $buffer."\n"; 

print_r(curl_getinfo($curl_handle)); 
?> 

這對我的作品。但是,我看到的唯一可能阻止您接收數據的其他問題是您的連接超時時間過長。嘗試將其設置得更高。

再次,上面的代碼確實有效。

修訂AGAIN

原因你的回覆是recieving一個錯誤,因爲目標站點檢查是否有有效的用戶代理。

喜歡的東西:

curl_setopt($curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.04 (lucid) Firefox/3.6.15"); 

的作品就好了。

+0

@vicTrolla,我修正了'$ url'(vs''url''),我不認爲它可以或者 – Tomd 2011-03-24 18:12:24

+0

@vicTrolla,當'$ url'確實嘗試了''url''似乎沒有工作 – Tomd 2011-03-24 18:13:06

+0

@Tomd我已經爲你更新了我的答案。 – vicTROLLA 2011-03-24 18:42:30

1

嘗試

curl_setopt($curl_handle,CURLOPT_URL, $url); 

,而不是

curl_setopt($curl_handle,CURLOPT_URL, '$url');