Проблемы аутентификации cURL Datatel R25 XML Feed - PullRequest
1 голос
/ 24 марта 2011

Я все еще довольно новичок в игре с PHP. Я хотел ткнуть в маленький проект. У меня есть возможность доступа к XML-каналу из нашей календарной системы на работе. Лента требует аутентификации с использованием имени пользователя и пароля. Я пытаюсь автоматизировать вытягивание этого канала. Я надеюсь в один прекрасный день использовать его для автоматизации планирования другой системы, но сейчас я просто пытаюсь заставить эту сторону работать.

Я прочитал некоторые документы по cURL на php.net. Я также искал через stackoverflow несколько примеров. Они помогли мне начать, но не намного дальше. Ниже то, что я имею до сих пор. Но все, что я вернусь, это:

НЕСАНКЦИОНИРОВАН. Требуется разрешение

Так что я ломаю голову, чтобы понять, в чем может быть проблема. Я уверен, что отчасти моя проблема заключается в незнании фактического процесса, стоящего за тем, что происходит между клиентом и сервером. Когда я взаимодействую с ним в обычном режиме, я просто захожу на URL-адрес канала, браузер запрашивает у меня имя пользователя и пароль, а затем, после его ввода, дает мне страницу XML.

Я проверил большинство ошибок форматирования и синтаксических ошибок, которые я знал, чтобы искать. Это все еще может быть, но на данный момент, я думаю, это скорее мое непонимание того, как все это сочетается. Спасибо за любую помощь.

Похожие проблемы:

Анализ данных XML с пространствами имен в PHP

CURL HTTP-аутентификация на стороне сервера

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://somesight.someplace.edu/r25ws/servlet/wrd/run/events.xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

1 Ответ

0 голосов
/ 25 марта 2011

Я понял это самостоятельно, посмотрев аналогичное руководство для Twitter.Я попробовал другой подход к форматированию параметров, и он работал нормально.Я также сократил количество опций, которые я отправлял, потому что это казалось излишним.Код, который работает ниже.

<?php
$username = 'myusername';
$password = 'mypassword';

$datecall = curl_init("http://somesite.someplace.edu/r25ws/servlet/wrd/run/events.xml");

curl_setopt($datecall, CURLOPT_USERPWD, $username.":".$password);
curl_setopt($datecall, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($datecall);
echo $result;

?>
...