Autenticazione API di WebTrends PHP
Domanda
Sto cercando di connettersi all'API di WebTrend utilizzando PHP ma non è stato in grado di autenticare.
L'esempio dato sulla documentazione della WT è per .NET o Ruby, l'esempio .net è come questo:
var svc = new WebClient();
svc.Credentials = new NetworkCredential("yourWebTrendsAccount\WebTrendsUserName", "yourSuperSecretPassword");
svc.DownloadStringCompleted += svc_DownloadStringCompleted;
svc.DownloadStringAsync(new Uri(baseUri));
.
Non ho familiarità con .NET, ma c'è un equivalente di quella classe WebClient su PHP?
Ho cercato di autenticare l'utilizzo di Curl usando
username = "my_account_name/my_login_name"
password = "my_password"
.
Ma finora non è fortuna.Ottengo un messaggio di errore che dice che i parametri non sono corretti.
Aggiornamento: Aggiunta del codice
.
$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);
Ho anche provato
.
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
Ma senza fortuna finora.
Soluzione
@kevin Horst ha fornito un buon esempio di eseguire una richiesta di autenticazione di base con curl e php.Devo spesso farlo tramite la riga di comando.Per fare ciò è necessario un curl installato sul tuo sistema.
curl --user username:password \
-i https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml
.
Secondo la documentazione sull'API di estrazione dei dati di WebTrends.Usano l'autenticazione di base su SSL che è uno standard per l'autenticazione riposante.
Altri suggerimenti
Penso che devi usare Curlopt_UserPWD invece di 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);
.