2011-05-16 16 views
6

Estoy intentando conectarme a la API de Webtrend utilizando PHP pero no he podido autenticarme.Autenticación de API de Webtrends PHP

El ejemplo dado en la documentación de la WT es para .NET o Ruby, el ejemplo .Net es así:

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

No estoy familiarizado con .NET, pero ¿hay un equivalente de esa clase WebClient en PHP?

que han estado tratando de autenticar usando CURL usando

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

pero hasta ahora sin suerte. Aparece un mensaje de error que dice que los parámetros no son correctos.

Actualización: Agregar código

$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); 

también probé

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

pero sin suerte hasta ahora.

+0

muestran detalles de su script php – Ibu

+0

He arreglado el problema. después de mirar el mensaje de error en los encabezados http ('problema de certificado SSL, verifique que el certificado CA esté bien') Agregué estas líneas al código y ahora funciona: – Jon

+0

curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, 0); – Jon

Respuesta

0

@ Kevin Horst proporciona un buen ejemplo de la ejecución de una solicitud de autenticación básica con el enrollamiento y PHP. A menudo necesito hacer esto a través de la línea de comando. Para hacer esto, necesitas curl instalado en tu sistema.

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

De acuerdo con la documentación de la API de WebTrends Data Extraction. Utilizan la Autenticación básica sobre SSL, que es un estándar para la autenticación RESTful.

WebTrends Data extraction API

1

Yo creo que hay que utilizar en lugar de CURLOPT_USERPWD 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);