Я не совсем уверен, были ли какие-либо недавние обновления API-интерфейсов Watson Analytics, но на самом деле мой оригинальный код работал правильно, теперь у меня возникают проблемы.
У нас в php есть функция, которая создает переменную с именем csv, а затем выполняет curl, чтобы загрузить ее, как указано в API Explorer, страница. Следуйте, как код:
функция populateDataset_Internal ($ dsId, $gmentId, $ 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, например, приведенный ниже пример:
FileType; География; счета; промышленность; сектор; имя; DateStart; HourStart, HOUR (HourStart); DateEnd; HourEnd; ЧАС (HourEnd); Статус
JOBType, Бразилия; Бета; финансовый; BANK; Test; 02/02/2016; 00; 02/02/2016; 01; Complete
Это работало до тех пор, пока код не был заменен на API Explorer. С тех пор мы начали получать неправильная ошибка. После обмена электронной почтой с поддержкой WA Team они предоставили другой исходный код, но проблема остается. Код указан выше.
Кто-то сталкивался с той же проблемой или даже имел представление о том, что происходит?
Я воспроизвел проблему, используя Почтальон. Вам необходимо удалить или обновить заголовок Accept. API только когда-либо возвращает application / json. Я думаю, что применение значения Accept недавно было добавлено, поэтому оно работало и прекращалось. Возвращенная полезная нагрузка недопустима, я попрошу команду исправить это.
Также похоже, что пример, отображаемый в API Explorer, неверен.
Других решений пока нет …