Вопрос по CURLам

Vano_big

Новичок
Вопрос по CURLам

В общем, задача такова.
Есть удаленная система с которой нужно организовать обмен.
Обмен осуществляется по средствам HTTP запросов, а сами данные для обмена должны быть в теле запроса в виде XML блока.

Работа с сервером ведется через HTTPS протокол.
Я попробовал через сокеты, не вышло.

адрес сервера https://IP адрес:port/script.php

Требуется в хедер запроса прицепить логин (HTTP_AUTH_LOGIN), пароль (HTTP_AUTH_PASSWD), и параметр
(HTTP_AUTH_OP) который определяет производимые действия.

В тело запроса нужно прицепить XML блок.
Не знаю как это корректно реализовать через CURLы.

Кто может что-нибудь дельное подсказать.
 

Vano_big

Новичок
Re:Вопрос по CURLам

Эта статья читалась.
С этого и начал.

Не получается следующее.
Обработчик ошибок пишет
socket error.
 

neko

tеam neko
тебе не кажется что "через сокеты" и curl вещи несколько разные?

ты уж определись об ошибках чего ты рассказываешь
строчку покажи
сообщение об ошибке
 

Vano_big

Новичок
Я не совсем понял что-ты до этого просил, поэтому так и написал.

Вот мой код:
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $login.":".$pass);
$result = curl_exec($ch);
echo $result;

print_r(curl_getinfo($ch));
echo "\n\ncURL error number:" .curl_errno($ch);
echo "\n\ncURL error:" . curl_error($ch);

curl_close($ch);

Вот сообщение об ошибке:
cURL error number:7 cURL error:socket error: 61

-~{}~ 08.06.04 17:59:

Пробую хотябы этот кусок отладить.
Чтобы хоть какой-то результат.

Вот кстати и вопрос.
Если url идет такой https://IP адрес:port/script.php
то его в таком виде и в curl_setopt($ch, CURLOPT_URL, $url) нужно подставить?
 

Vano_big

Новичок
в смысле этот https://IP адрес:port/script.php?

этот точно правильно указываю
 

neko

tеam neko
есть мнение что порт надо указывать через curl_setopt()
 

Vano_big

Новичок
в том и дело что уже устал заглядывать
опции отвечающей за порт в явном виде нет

может быть через заголовок как-то но...
ну так может кто подсказать?

-~{}~ 08.06.04 18:17:

извиняюсь, наврал
есть такая опция

-~{}~ 08.06.04 18:21:

такая же беда
cURL error number:7 cURL error:socket error: 61

а где описание ошибок можно почитать?
 

neko

tеam neko
для https все опции выставил правильно?

поставь curlopt_verbose и посмотри что пишет
 

BoFFiN

Новичок
PHP:
$ch = curl_init("http://***.*/index.php?file=*.xls");
        $fp = fopen ("*.xls", "wb");
        curl_setopt ($ch, CURLOPT_FILE, $fp);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_exec ($ch);
        curl_close ($ch);
        fclose ($fp);
Почему не работает? А лучше, как заставить, чтобы заработало?

-~{}~ 15.07.04 17:22:

Ну может кто-нибудь всё-таки поможет?!

-~{}~ 19.07.04 15:59:

Неужели придёться самому рыться в факах?

-~{}~ 19.07.04 18:10:

Вообщем разобрался с одной проблемой, как возникла другая...
Оказывается, чтобы скачать нужный мне файл нужно зайти сначала, на определеленную
страницу, типа: http://www.***.ru/index.php?date=19072004
Из выбранного списка выбрать нужный нам файл ссылкой:
http://www.***.ru/index.php?file=19072004.xls
после чего файл качается...
Но если сразу прыгнуть по ссылке
(предварительно не заходя на http://www.***.ru/index.php?date=19072004)
http://www.***.ru/index.php?file=19072004.xls мы не получим ничего...
Вообщем подлый вебмастер проверяет hreferer, конечно это можно
обойти с помощью fsockopen, ну раз начал с курлами, то буду продолжать,
конечно, еси это возможно? Дай хоть наводку...
 

BoFFiN

Новичок
Winer
Ничего мы не тырим, лишь хочу автоматом скачивать файл, который предаставляют скачивать каждый божий день.. :)

TuBu
Обязательно просмотрю ету опцию... спс, может и поможет..

-~{}~ 20.07.04 10:58:

Я просто в ярости...
Значит, вот что происходит при скачивание файла(отследил с помощью HttpWatch'a):
[http]
GET http://www.np-ats.ru/public_results/sell_units/index.php?file=2004071900263DAGENERG_sell_units.xls HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://www.np-ats.ru/public_results/sell_units/index.php?date=20040719
Accept-Language: ru
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRA 2.5 (build 00387))
Host: www.np-ats.ru
Cookie: uid=rBABDEDj+JQAAD+wAx5mAg==; PHPSESSID=aaa9a61ef4815b90e2965cf76864d82e
[http]

На пхп делаю так:
PHP:
$ch = curl_init("http://www.np-ats.ru/public_results/sell_units/index.php?file=2004071900263DAGENERG_sell_units.xls");
        $fp = fopen ("2004071400258DAGENERG_sell_units.xls", "wb");
        curl_setopt ($ch,CURLOPT_VERBOSE,1);
        curl_setopt ($ch,CURLOPT_PROXY,"172.18.81.3:3128");
        curl_setopt ($ch,CURLOPT_CUSTOMREQUEST,"GET [url]http://www.np-ats.ru/public_results/sell_units/index.php?file=2004071900263DAGENERG_sell_units.xls[/url] HTTP/1.0");  // ?
        curl_setopt ($ch,CURLOPT_HTTPHEADER,"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*");  //?
        curl_setopt ($ch,CURLOPT_REFERER,"Referer: [url]http://www.np-ats.ru/public_results/sell_units/index.php?date=20040719[/url]");
        curl_setopt ($ch,CURLOPT_HTTPHEADER,"Accept-Language: ru"); //?
        curl_setopt ($ch,CURLOPT_HTTPHEADER,"Proxy-Connection: Keep-Alive"); //?
        curl_setopt ($ch,CURLOPT_USERAGENT,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRA 2.5 (build 00387))");
        curl_setopt ($ch,CURLOPT_HTTPHEADER,"Host: [url]www.np-ats.ru[/url]"); //?
        curl_setopt ($ch,CURLOPT_COOKIE,"Cookie: uid=rBABDEDj+JQAAD+wAx5mAg==; PHPSESSID=aaa9a61ef4815b90e2965cf76864d82e");
        curl_setopt ($ch, CURLOPT_FILE, $fp);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_exec ($ch);
        curl_close ($ch);
        fclose ($fp);
Файла xls не приходит! Вместо этого выдается страница даты! Что делать? я в бешенстве...
 

neko

tеam neko
вылавливай какие заголовкли шлются при обычном запросе к файлу из браузера и посылай идентичные

если файл вааще можно скачать, значит и курлом получится
 

BoFFiN

Новичок
neko
Так я же специально написал, какие заголовки шлются:

[http]
GET http://www.np-ats.ru/public_results..._sell_units.xls HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://www.np-ats.ru/public_results...p?date=20040719
Accept-Language: ru
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRA 2.5 (build 00387))
Host: www.np-ats.ru
Cookie: uid=rBABDEDj+JQAAD+wAx5mAg==; PHPSESSID=aaa9a61ef4815b90e2965cf76864d82e
[http]
Вроде и курлом все, то же самое шлю...
Ед-ое я не уверен в таких строках:

PHP:
curl_setopt ($ch,CURLOPT_CUSTOMREQUEST,"GET http://www.np-ats.ru/public_results/sell_units/index.php?file=2004071900263DAGENERG_sell_units.xls HTTP/1.0");

curl_setopt ($ch,CURLOPT_HTTPHEADER,"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*");

curl_setopt ($ch,CURLOPT_HTTPHEADER,"Accept-Language: ru");

curl_setopt ($ch,CURLOPT_HTTPHEADER,"Proxy-Connection: Keep-Alive");

curl_setopt ($ch,CURLOPT_HTTPHEADER,"Host: www.np-ats.ru");
Всё ли в них верное, и можно ли CURLOPT_HTTPHEADER использовать в таком контексте?
 

TuBu

Guest
Насколько я помню надо так:

$headers = array(
"Host: lalala",
"Accept-Language: lalala",
...
);

curl_setopt ($ch,CURLOPT_HTTPHEADER, $headers);
 
Сверху