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.

¿Fue útil?

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.

API de extracción de datos de WebTRENDS

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); 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top