0

我不太确定 Watson Analytics API 最近是否有任何更新,但事实上我的原始代码运行正常,我现在面临问题。

我们在 php 中有一个函数,它构建了一个名为 csv 的变量,然后执行 curl 以将其加载到 API Explorer 页面中。按照代码的方式:

函数 populateDataset_Internal($dsId, $segmentId, $strJsonColumns, $strLine){

$curl = curl_init();

$csv = $strJsonColumns;
$csv .= $strLine;

echo $csv;

curl_setopt_array($curl, array(
  CURLOPT_URL => "/data/v1/datasets/" . $dsId . "/content/" . $segmentId,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "PUT",
    curl_setopt($curl, CURLOPT_POSTFIELDS, $csv),
    //CURLOPT_POSTFIELDS => $csv,
    CURLOPT_HTTPHEADER => array(
    "accept: text/csv",
    "content-type: text/csv",
    "cache-control: no-cache",
    "authorization: Bearer " . $_SESSION["tokenl"],
    "x-ibm-client-id: " . $_SESSION["XIBMCLIENTID"],
    "x-ibm-client-secret: " . $_SESSION["XIBMCLIENTSECRET"]
  ),
));    

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);    

echo "populateDataset_Internal:" . $response . " - " . $err  ."<br/>";

return "";

}

$csv 包含 txt/csv 内容,例如以下示例:

文件类型;地理;帐户;行业;部门;名称;日期开始;小时开始;小时(小时开始);日期结束;小时结束;小时(小时结束);状态 JOBType,巴西;测试版;财务;银行;测试;2016 年 2 月 2 日;00 ;02/02/2016;01;完成

在将代码替换到 API Explorer 之前,这一直很顺利。从那时起,我们开始收到格式错误的错误。在与 WA Team 支持人员交换了一些电子邮件后,他们提供了其他源代码,但问题仍然存在。代码在上面列出。

是否有人面临同样的问题,甚至对正在发生的事情有所了解?

4

1 回答 1

0

我使用邮递员重现了这个问题。您需要删除或更新 Accept 标头。API 只返回 application/json。我认为最近添加了 Accept 值的强制执行,这就是它曾经工作并停止的原因。返回的有效载荷是不可接受的,我会要求团队解决这个问题。

看起来 API Explorer 中显示的示例也是错误的。

于 2016-12-20T20:58:07.313 回答