Аутентификация Webtrends API PHP

Я пытаюсь подключиться к API Webtrend с помощью PHP, но не смог пройти аутентификацию.

Пример, приведенный в документации WT, предназначен для .NET или Ruby, пример .Net выглядит следующим образом:

var svc = new WebClient();
        svc.Credentials = new NetworkCredential("yourWebTrendsAccount\WebTrendsUserName", "yourSuperSecretPassword");
        svc.DownloadStringCompleted += svc_DownloadStringCompleted;
        svc.DownloadStringAsync(new Uri(baseUri));

Я не знаком с .NET, но есть ли эквивалент этого класса WebClient на PHP?

Я пытался пройти аутентификацию с помощью CURL, используя

username = "my_account_name/my_login_name" 
password = "my_password" 

но пока не повезло. Я получаю сообщение об ошибке, в котором говорится, что параметры неверны.

Обновление: добавлен код

    $username=urlencode('my_account_name\my_login_name');
    $password="my_password";


    $postdata="username=$username&password=$password";

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL,"https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml");
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
    curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1);
    $result = curl_exec ($ch);
    curl_close($ch);
    var_dump($result);

я тоже пробовал

curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

но пока не повезло.


person Jon    schedule 16.05.2011    source источник
comment
показать детали вашего php-скрипта   -  person Ibu    schedule 16.05.2011
comment
я исправил проблему. просмотрев сообщение об ошибке в заголовках http («Проблема с сертификатом SSL, убедитесь, что сертификат ЦС в порядке»), я добавил эти строки в код, и теперь он работает:   -  person Jon    schedule 16.05.2011
comment
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);   -  person Jon    schedule 16.05.2011
comment
Было бы намного проще с PHP.NET stackoverflow.com/q/1883956/78782   -  person Adam Harte    schedule 23.05.2011


Ответы (2)


@Kevin Horst предоставил хороший пример выполнения простого запроса аутентификации с помощью curl и PHP. Мне часто нужно сделать это через командную строку. Для этого в вашей системе должен быть установлен curl.

 curl --user username:password \
-i https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml

Согласно документации по API извлечения данных WebTrends. Они используют обычную аутентификацию через SSL, которая является стандартом для аутентификации RESTful.

API извлечения данных WebTrends

person Tass Skoudros    schedule 11.07.2011

Я думаю, вам нужно использовать CURLOPT_USERPWD вместо почтовых данных:

$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, 'https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml');
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($connection, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, sprinf('%s:%s', $username, $password))
$data = curl_exec();
curl_close($ch); 
person Community    schedule 29.06.2011