2016-11-29 4 views
0

Ich bin nicht ganz sicher, ob es kürzlich Updates zu Watson Analytics APIs gab, aber in der Tat funktionierte mein ursprünglicher Code richtig, ich bin jetzt mit Problemen konfrontiert.php - Watson Analytics - Returning missformed

Wir haben eine Funktion in PHP, die eine Variable mit dem Namen csv erstellt und führen Sie dann eine Curl, um es wie in API Explorer, Seite angegeben zu laden. Folgen, wie der Code ist:

Funktion 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 ""; 

}

die $ csv enthält txt/csv Inhalt, wie das Beispiel unten:

Filetype; Geographie; Konto; Industrie; Sector; Bezeichnung; DateStart; HourStart; HOUR (HourStart); DateEnd; HourEnd; HOUR (HourEnd); Stand Jobtype, Brasilien; Beta; Finanz; BANK;-Test; 02/02/2016; 00; 02/02/2016; 01; Vollständig

Dies funktionierte reibungslos, bis der Code in API Explorer ersetzt wurde. Seitdem haben wir begonnen, fehlerhaften Fehler zu erhalten. Nach dem Austausch einiger E-Mails mit dem WA-Team-Support haben sie anderen Quellcode bereitgestellt, aber das Problem besteht weiterhin. Der Code ist oben aufgeführt.

Hatte jemand das gleiche Problem oder hat er eine Idee?

Antwort

0

Ich reproduzierte das Problem mit Postman. Sie müssen den Accept-Header entfernen oder aktualisieren. Die API gibt nur die Anwendung/json zurück. Ich denke, die Durchsetzung des Accept-Wertes wurde kürzlich hinzugefügt, deshalb hat es früher funktioniert und gestoppt. Die zurückgegebene Payload ist inakzeptabel. Ich werde das Team bitten, das Problem zu beheben.

Es sieht auch so aus, als ob das im API Explorer angezeigte Beispiel falsch ist.

+0

Hallo Rob, zuerst vielen Dank für Ihren Versuch! Ich habe die Kopfzeile der Accept-Anweisung als application/json aktualisiert und der Fehler bleibt bestehen. Ich habe auch versucht, die Zeile zu kommentieren und der Fehler wird immer noch zurückgegeben. Irgendein anderer Versuch im Sinn? –

+0

Sie müssen den Antwortcode, die Header und den zurückgegebenen Text anzeigen. Der Fehler "Malformed" stammt von PHP, weil Sie versuchen, eine Fehlerantwort genauso zu behandeln wie eine Erfolgsantwort. –