Webtrends API认证PHP

6

我正在尝试使用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");

但是到目前为止还没有成功。


展示你的 PHP 脚本细节。 - Ibu
我已经解决了这个问题。在查看了HTTP头部中的错误消息(“SSL证书问题,请验证CA证书是否正常”)后,我添加了这些代码行,现在它可以正常工作: - Jon
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); - Jon
使用PHP.NET会更容易。https://dev59.com/I3I-5IYBdhLWcg3wYnSQ - Adam Harte
2个回答

1

我认为你需要使用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); 

0

@Kevin Horst提供了一个使用curl和PHP执行基本身份验证请求的好例子。我经常需要通过命令行来完成这个操作。为此,您需要在系统上安装curl。

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

根据WebTrends数据提取API的文档,他们使用基本身份验证加SSL作为RESTful身份验证的标准。

WebTrends数据提取API


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接