【问题标题】:Webtrends API authentication PHPWebtrends API 认证 PHP
【发布时间】:2011-05-16 07:39:43
【问题描述】:

我正在尝试使用 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 脚本的详细信息
  • 我解决了这个问题。查看 http 标头中的错误消息(“SSL 证书问题,验证 CA 证书是否正常”)后,我将这些行添加到代码中,现在它可以工作了:
  • curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
  • 使用 PHP.NET 会更容易stackoverflow.com/q/1883956/78782

标签: php .net api webtrends


【解决方案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); 

【讨论】:

    【解决方案2】:

    @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 Data extraction API

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 2018-10-11
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多