php - Watson Analytics - 返回格式错误

时间:2016-11-29 13:16:03

标签: php ibm-watson malformed watson

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

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

function 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内容,如下例所示:

文件类型;地理;账户;工业;部门;名称; DateStart; HourStart; HOUR(HourStart); DateEnd; HourEnd; HOUR(HourEnd);状态 JOBType,巴西;β;金融; BANK;试验; 2016年2月2日; 00; 2016年2月2日; 01;完整的

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

是否有人面临同样的问题,甚至不知道发生了什么?

1 个答案:

答案 0 :(得分:0)

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

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