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.

Était-ce utile?

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.

API d'extraction de données WebTrends

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); 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top