【问题标题】:Integrating the IBM Watson Personality Insights API集成 IBM Watson Personality Insights API
【发布时间】:2017-04-03 05:05:00
【问题描述】:

我正在构建一个 Web 应用程序并希望集成 IBM Watson Personality Insights API。 我正在使用 PHP,并且必须使用 Curl Library 来实现同样的目的

以下是 IBM 文档中提到的使用 Curl 的代码

curl -X POST --user {username}:{password}
--header "Content-Type: text/plain;charset=utf-8"
--header "Accept: application/json"
--data-binary @<filename>
"https://gateway.watsonplatform.net/personality-insights/api/v3/profile"

我如何在 PHP 中做到这一点?

我正在尝试这样做,但我得到一个空响应

$ch2 = curl_init("https://gateway.watsonplatform.net/personality-insights/api/v3/profile");
$request_headers = array();
$request_headers[] = 'Content-Type: text/plain;charset=utf-8';
$request_headers[] = 'Content-Language: en';
$request_headers[] = 'Accept-Language: en';

$simple_data = 'Some dummy data';
    curl_setopt_array( $ch2, array(
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => $simple_data,
        CURLOPT_HTTPHEADER => $request_headers,
        CURLOPT_USERPWD => 'XXXX:YYYY',
    )
);
$response2 = curl_exec( $ch2 );

【问题讨论】:

  • 您的请求中的--header "Accept: application/json" 在哪里?
  • 我尝试添加 $request_headers[] = 'Accept: application/json';但没有任何改变@MathieuBorderé
  • 尝试在脚本顶部添加error_reporting(E_ALL); ini_set('display_errors', 'On');,然后在curl_exec 之后添加var_dump(curl_error($ch2));,看看是否有任何错误。就像现在一样,你没有输出任何东西,所以它可能正在工作。 var_dump($response2); 节目是什么?
  • 它给出的错误是“SSL 证书问题:证书链中的自签名证书”,所以我在我的代码中添加了一个“CURLOPT_SSL_VERIFYPEER => false”。现在它没有给出任何错误,但响应包含 '{"code":400,"sub_code":"S00016","error":"No version provided"}' @drew010

标签: php curl libcurl ibm-watson personality-insights


【解决方案1】:

拥有有效的 SSL 证书以便从 API 获取结果是一个很好的做法。 尝试以下步骤

  1. 转到 Firefox 并访问 https://gateway.watsonplatform.net/personality-insights/api/v3/profile
  2. 使用您的 Watson PI 凭据登录
  3. 点击网址栏最左侧的锁,然后点击更多信息。
  4. 点击查看证书 -> 详情
  5. 层次结构中的第一项是 IBM Watson PI 的 CA 证书,将其导出到您的计算机。
  6. 然后在你的 Curl 请求中使用这 3 行代码

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_CAINFO , getcwd() . "\Your Certificate Location");
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多