使用PHP使用api创建自然语言分类器时出错,返回的数据误差过小,但可在Postman中使用

cURL请求在Postman中可以使用以下内容:

curl -i -u "apikey:12345" \
-F training_data=@rtcu.csv \
-F training_metadata="{\"language\":\"en\",\"name\":\"RTCU\"}" \
"https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/v1/classifiers"

邮递员为PHP生成的cURL代码返回{“代码”:400,“错误”:“数据太小”,“描述”:“收到的培训条目数= 0,小于要求的最小值5 “}

<?php

 $curl = curl_init();

 curl_setopt_array($curl,array(
 CURLOPT_URL => "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers",CURLOPT_RETURNTRANSFER => true,CURLOPT_ENCODING => "",CURLOPT_MAXREDIRS => 10,CURLOPT_TIMEOUT => 30,CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,CURLOPT_CUSTOMREQUEST => "POST",CURLOPT_POSTFIELDS => "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"training_data\"; filename=\"rtcu.csv\"\r\nContent-Type: text/csv\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"training_metadata\"\r\n\r\n{\"language\":\"en\",\"name\":\"RTCU\"}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--",CURLOPT_HTTPHEADER => array(
"Authorization: Basic 12345","cache-control: no-cache","content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
),));

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

 curl_close($curl);

 if ($err) {
 echo "cURL Error #:" . $err;
} else {
 echo $response;
}

我尝试像其他posts一样在文件名前面添加“ @”,但没有成功。我在其他IBM Watson服务及其cURL调用中没有遇到此问题。可能是什么问题?

bigege 回答:使用PHP使用api创建自然语言分类器时出错,返回的数据误差过小,但可在Postman中使用

使用CURLFile对我有用

$uploadFilePath = 'rtcu.csv';

 $name = "RTCU";
 $lang = "en";

 $uploadFileMimeType = "text/csv";
 $uploadFilePostKey = 'training_data';
 $metaPostKey = "training_metadata";

 $uploadFile = new CURLFile(
 $uploadFilePath,$uploadFileMimeType,$uploadFilePostKey
);

 $curlHandler = curl_init();

 curl_setopt_array( $curlHandler,[
 CURLOPT_URL => 'https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers',CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_HTTPHEADER => array(
"Authorization: Basic 12345","cache-control: no-cache"
),CURLOPT_POSTFIELDS => [
 $uploadFilePostKey => $uploadFile,$metaPostKey => "{\"language\":\"{$lang}\",\"name\":\"{$name}\"}"
],] );

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

 curl_close( curlHandler );

 if ( $err ) {
 echo "cURL Error #:" . $err;
} else {

 echo $response;

}
}
本文链接:https://www.f2er.com/3117021.html

大家都在问