<skip>...</skip>
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_Request);
request.Credentials = CredentialCache.DefaultCredentials;
request.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3";
request.Method = "GET";
request.Referer = "http://www.tratata.com/buyback.php#buyback_server_listing";
request.CookieContainer = new CookieContainer();
request.CookieContainer.SetCookies(rr, "XXXXXXX");
<skip>...</skip>
cURL: Выполнить GET-запрос, так же как в HTTPWebRequest.
Код:
сам вызов выполнялся так:
Код:
ld = new LoadDataFromSite("http://www.tratata.com/supplier_xmlhttp.php?action=get_buyback_server_list&buyback_cat_id=195&slang=1&buyback_products_id=0 HTTP/1.1");
все работает прекрасно. Теперь мне надо перенести это на PHP.
Пишу следующий код с использованием cURL (обработка ошибок опущена):
Код:
class LoadData{
//
private $ch;
private $info;
private $reffer;
private $url;
private $cookie;
private $useragent;
private $metog;
private $hFile;
public function __construct($url,$reffer,
$cookie = '',
$useragent = 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.6.2',
$metod = 'GET')
{
$this->reffer = $reffer;
$this->url = $url;
$this->cookie = $cookie;
$this->useragent = $useragent;
$this->metod = $metod;
$this->ch = curl_init($this->url);
curl_setopt($this->ch,CURLOPT_HEADER,0);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_USERAGENT, $this->useragent);
curl_setopt($this->ch, CURLOPT_COOKIEFILE, $this->cookie);
curl_setopt($this->ch, CURLOPT_REFERER, $this->reffer);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST,$this->metod);
}
public function ExcecuteQuery()
{
set_time_limit (600);
return curl_exec($this->ch);
}
public function Close()
{
curl_close($this->ch);
}
}
//
private $ch;
private $info;
private $reffer;
private $url;
private $cookie;
private $useragent;
private $metog;
private $hFile;
public function __construct($url,$reffer,
$cookie = '',
$useragent = 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.6.2',
$metod = 'GET')
{
$this->reffer = $reffer;
$this->url = $url;
$this->cookie = $cookie;
$this->useragent = $useragent;
$this->metod = $metod;
$this->ch = curl_init($this->url);
curl_setopt($this->ch,CURLOPT_HEADER,0);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_USERAGENT, $this->useragent);
curl_setopt($this->ch, CURLOPT_COOKIEFILE, $this->cookie);
curl_setopt($this->ch, CURLOPT_REFERER, $this->reffer);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST,$this->metod);
}
public function ExcecuteQuery()
{
set_time_limit (600);
return curl_exec($this->ch);
}
public function Close()
{
curl_close($this->ch);
}
}
вызов:
Код:
$obj = new LoadData('http://www.tratata.com/supplier_xmlhttp.php?action=get_buyback_server_list&buyback_cat_id=195&slang=1&buyback_products_id=0 HTTP/1.1',
'http://www.tratata.com/buyback.php#buyback_server_listing',
'XXXXXXXXX');
print $obj->ExcecuteQuery();
$obj->Close();
'http://www.tratata.com/buyback.php#buyback_server_listing',
'XXXXXXXXX');
print $obj->ExcecuteQuery();
$obj->Close();
Получаю - 0. Хедер, который я получаю:
Код:
HTTP/1.1 200 OK Server: Apache X-Powered-By: PHP/5.2.11 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Expires: Thu, 19 Nov 1981 08:52:00 GMT Content-Type: text/xml Date: Sat, 27 Feb 2010 21:28:54 GMT Transfer-Encoding: chunked Connection: keep-alive Connection: Transfer-Encoding Set-Cookie: XXXXXXXXX=e1n6d877778rna3lomeac68733; path=/; domain=.tratata.com
Скрипт должен обратится к AJAX-скрипту и выгрузить данные, а это не происходит. В чем проблема? Может быть то, что выполнение задачи происходит на другом сервере, а кука берется от того сервера, с которого надо получить данные? Ну так вроде я указываю конкретно название файла, и он присутсвует.
Как это сделать на PHP? Страницу кстати я получаю без проблем - но не могу получить те данные, которые мне нужны.
А вообще лучше приведите сам сайт (и весь код), с которого тянете (можете в личку), я тогда завтра-послезавтра гляну, что не работает, т.к. порой все может упираться в конкретный сайт, а не в код.
Цитата: UAS
Хмм, а наличие в конце первого параметра инициализации LoadData() такой вещи, как "...products_id=0 HTTP/1.1" не мешает?
А вообще лучше приведите сам сайт (и весь код), с которого тянете (можете в личку), я тогда завтра-послезавтра гляну, что не работает, т.к. порой все может упираться в конкретный сайт, а не в код.
А вообще лучше приведите сам сайт (и весь код), с которого тянете (можете в личку), я тогда завтра-послезавтра гляну, что не работает, т.к. порой все может упираться в конкретный сайт, а не в код.
Да вобщем то пробовал по разному - я привел в том виде, как работало в шарпе, но не работает в курле. Пытался манипулировать в том числе и опциями курла - результат аналогичный - т.е. я получаю хедер от сайта, и 0 (ноль) записей.
Код он в принципе приведен целиком - т.е. код класса и его вывод - подробности кину в ЛС.