課程
/后端開發
/PHP
/PHP中的數據傳輸神器cURL
未將對象引用設置到對象的實例?我也是這個問題
2014-11-07
源自:PHP中的數據傳輸神器cURL 2-3
正在回答
二樓的可以解決,但是不知道為什么!
流浪滴汪汪汪
添加 curl_setopt($curlobj, CURLOPT_USERAGENT, "user-agent:Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0"); ?即可
慕沐2779526
curl_setopt ( $curl_obj, CURLOPT_USERAGENT, 瀏覽器UA可自行填寫);
首先我用html的form測試可以獲取到信息,說明服務端沒有問題
然后我獲取自己寫的一個1.php,可以抓取到POST信息,說明代碼一般是可以抓取到信息的。
猜測問題出在服務端對header進行了檢測,
那么嘗試加上user-agent
添加以下代碼
curl_setopt ( $curl_obj, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
成功獲取到數據。
完整代碼如下:
<?php ????$data?=?'theCityName=北京'; ????$curl_obj?=?curl_init();?//?初始化 ????$url?=?'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName'; ????$url2?=?'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince'; ????$url3?=?'http://localhost/1110/1.php'; ????curl_setopt($curl_obj,?CURLOPT_URL,?$url);?//?設置訪問URL ????curl_setopt?(?$curl_obj,?CURLOPT_USERAGENT,?$_SERVER['HTTP_USER_AGENT']); ????curl_setopt($curl_obj,?CURLOPT_HEADER,?0);?//?啟用時會將頭文件的信息作為數據流輸出 ????curl_setopt($curl_obj,?CURLOPT_RETURNTRANSFER,?1);?//?執行之后不直接打印出來 ????//?curl_setopt($curl_obj,?CURLOPT_POST,count($data)); ????curl_setopt($curl_obj,?CURLOPT_POST,?1);?//?啟用時會發送一個常規的POST請求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。 ????curl_setopt($curl_obj,?CURLOPT_POSTFIELDS,?$data);?//?全部數據使用HTTP協議中的"POST"操作來發送。要發送文件,在文件名前面加上@前綴并使用完整路徑。這個參數可以通過urlencoded后的字符串類似'para1=val1¶2=val2&...'或使用一個以字段名為鍵值,字段數據為值的數組。如果value是一個數組,Content-Type頭將會被設置成multipart/form-data。 ????curl_setopt($curl_obj,?CURLOPT_HTTPHEADER,?array( ????????????'Content-Type:?application/x-www-form-urlencoded;', ????????????'Content-length:'.strlen($data) ????????????)); ????$rtn?=?curl_exec($curl_obj);?//?執行 ????if?(!curl_errno($curl_obj))?{ ????????echo?$rtn; ????}?else?{ ????????echo?'Curl?error:?'?.?curl_errno($curl_obj); ????} ????curl_close($curl_obj);?//?關閉資源 ?>
我這里也是這個問題,用form提交的post就沒有這個問題.
舉報
cURL就是這樣的利器,可以幫助大家操作各種網絡資源
1 回答查找出錯了
1 回答為什么我在ubuntu報錯,Call to undefined function curl_init()
2 回答cmd 中輸入 php -i 報錯
1 回答Sorry,找不到你想要的頁面
3 回答這就是傳說中的爬蟲嗎
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-09-30
二樓的可以解決,但是不知道為什么!
2014-11-26
添加 curl_setopt($curlobj, CURLOPT_USERAGENT, "user-agent:Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0"); ?即可
2014-11-10
curl_setopt ( $curl_obj, CURLOPT_USERAGENT, 瀏覽器UA可自行填寫);
2014-11-10
首先我用html的form測試可以獲取到信息,說明服務端沒有問題
然后我獲取自己寫的一個1.php,可以抓取到POST信息,說明代碼一般是可以抓取到信息的。
猜測問題出在服務端對header進行了檢測,
那么嘗試加上user-agent
添加以下代碼
curl_setopt ( $curl_obj, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
成功獲取到數據。
完整代碼如下:
2014-11-10
我這里也是這個問題,用form提交的post就沒有這個問題.