WebTrend API Authentication php
Question
J'essaie de me connecter à l'API de WebTrend en utilisant PHP mais je n'ai pas pu s'authentifier.
L'exemple donné sur la documentation du WT est pour .NET ou Ruby, l'exemple .NET est comme ceci:
var svc = new WebClient();
svc.Credentials = new NetworkCredential("yourWebTrendsAccount\WebTrendsUserName", "yourSuperSecretPassword");
svc.DownloadStringCompleted += svc_DownloadStringCompleted;
svc.DownloadStringAsync(new Uri(baseUri));
Je ne connais pas .NET, mais y a-t-il un équivalent de cette classe WebClient sur PHP?
J'ai essayé d'authentifier en utilisant Curl en utilisant
username = "my_account_name/my_login_name"
password = "my_password"
Mais jusqu'à présent, pas de chance. Je reçois un message d'erreur disant que les paramètres ne sont pas corrects.
Mise à jour: Ajout de code
$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);
J'ai aussi essayé
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
Mais pas de chance jusqu'à présent.
La solution
@Kevin Horst a fourni un bon exemple d'exécution d'une demande d'authentification de base avec Curl et PHP. J'ai souvent besoin de le faire via la ligne de commande. Pour ce faire, vous avez besoin de boucler installé sur votre système.
curl --user username:password \
-i https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml
Selon la documentation sur l'API d'extraction de données WebTrends. Ils utilisent l'authentification de base sur SSL qui est une norme pour l'authentification reposante.
Autres conseils
Je pense que vous devez utiliser curlopt_userpwd au lieu de postdata:
$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);