Autenticación API de WebTRENDS PHP
Pregunta
Estoy tratando de conectarme a la API de WebTREND usando PHP pero no he podido autenticar.
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 ¿existe un equivalente de esa clase webclient en PHP?
He estado tratando de autenticarse usando CURL usando
username = "my_account_name/my_login_name"
password = "my_password"
pero hasta ahora no hay suerte.Recibo un mensaje de error que dice que los parámetros no son correctos.
actualización: agregando 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 lo intenté
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
pero sin suerte hasta ahora.
Solución
@kevin HORST proporcionó un buen ejemplo de la ejecución de una solicitud de autenticación básica con CURL y PHP.A menudo necesito hacer esto a través de la línea de comandos.Para hacer esto, necesita curl instalado en su 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 en la API de extracción de datos de WebTRENDS.Utilizan la autenticación básica sobre SSL, que es un estándar para la autenticación de descanso.
Otros consejos
I think you have to use CURLOPT_USERPWD instead of 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);