php — Watson Analytics — возврат в искаженном формате

Я не совсем уверен, были ли какие-либо последние обновления API Watson Analytics, но на самом деле мой исходный код работал правильно, и теперь я сталкиваюсь с проблемами.

У нас есть функция в php, которая создает переменную с именем csv, а затем выполняет завиток, чтобы загрузить ее, как указано в API Explorer, page. Следите за кодом:

функция 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);Status JOBType,Бразилия;Бета;Финансы;БАНК;Тест;02/02/2016;00 ;02.02.2016;01;Завершено

Это работало гладко, пока код не был заменен в API Explorer. С тех пор мы начали получать ошибку неправильного формата. После обмена электронной почтой со службой поддержки WA Team они предоставили другой исходный код, но проблема не устранена. Код указан выше.

Кто-то сталкивался с той же проблемой или даже имел представление о том, что происходит?


person Thiago Muntoreanu    schedule 29.11.2016    source источник


Ответы (1)


Я воспроизвел проблему с помощью Postman. Вам необходимо удалить или обновить заголовок Accept. API всегда возвращает только application/json. Я думаю, что принудительное значение значения Accept было добавлено недавно, поэтому оно работало и перестало. Возвращенная полезная нагрузка неприемлема, я попрошу команду это исправить.

Также похоже, что образец, отображаемый в API Explorer, неверен.

person Robert Hatfield    schedule 20.12.2016
comment
Привет, Роб. Во-первых, спасибо за попытку! Я обновил заголовок в операторе принятия как application/json, и ошибка не устранена. Я попытался также прокомментировать строку, и ошибка Malformed все еще возвращается. Любая другая попытка в виду? - person Thiago Muntoreanu; 26.12.2016
comment
Вам нужно посмотреть код ответа, заголовки и тело ответа. Ошибка Malformed из PHP, потому что вы пытаетесь обработать ответ об ошибке так же, как ответ об успешном завершении. - person Robert Hatfield; 26.12.2016