Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

cURL: Выполнить GET-запрос, так же как в HTTPWebRequest.

1
28 февраля 2010 года
kot_
7.3K / / 20.01.2000
В C# я вполне успешно использовал следующий код:
 
Код:
<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>

сам вызов выполнялся так:
 
Код:
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);
   }

}

вызов:
 
Код:
$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();

Получаю - 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? Страницу кстати я получаю без проблем - но не могу получить те данные, которые мне нужны.
244
28 февраля 2010 года
UAS
2.0K / / 19.07.2006
Хмм, а наличие в конце первого параметра инициализации LoadData() такой вещи, как "...products_id=0 HTTP/1.1" не мешает?

А вообще лучше приведите сам сайт (и весь код), с которого тянете (можете в личку), я тогда завтра-послезавтра гляну, что не работает, т.к. порой все может упираться в конкретный сайт, а не в код.
1
01 марта 2010 года
kot_
7.3K / / 20.01.2000
Цитата: UAS
Хмм, а наличие в конце первого параметра инициализации LoadData() такой вещи, как "...products_id=0 HTTP/1.1" не мешает?

А вообще лучше приведите сам сайт (и весь код), с которого тянете (можете в личку), я тогда завтра-послезавтра гляну, что не работает, т.к. порой все может упираться в конкретный сайт, а не в код.


Да вобщем то пробовал по разному - я привел в том виде, как работало в шарпе, но не работает в курле. Пытался манипулировать в том числе и опциями курла - результат аналогичный - т.е. я получаю хедер от сайта, и 0 (ноль) записей.
Код он в принципе приведен целиком - т.е. код класса и его вывод - подробности кину в ЛС.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог