質問

PHPを使用してWebTrendのAPIに接続しようとしていますが、認証できなかった。

WTのドキュメントで与えられた例は.NETまたはRuby用です.NETの例は次のようになります。

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

私は.NETに慣れていませんが、PHPにそのWebClientクラスの同等のものはありますか?

を使ってCURLを使用して認証しようとしています

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

しかし、これまでの運もない。パラメータが正しくないというエラーメッセージが表示されます。

アップデート:コードの追加

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

私も試してみました

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

しかし、これまでの運はありません。

役に立ちましたか?

解決

@kevin Horstは、CURLとPHPを使用して基本認証要求を実行するのが良い例を示しました。私はしばしばコマンドラインを介してこれをする必要があります。これを行うには、システムにカールがインストールされています。

 curl --user username:password \
-i https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml
. WebTrendsのドキュメントに応じて、WebTrendsデータ抽出APIに従っています。RESTful認証の標準であるSSLよりも基本認証を使用します。

WebTrendsデータ抽出API

他のヒント

PostDataの代わりにcurlopt_userpwdを使用する必要があると思います:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top