Мне нужно воссоздать это в PHP:
curl -X POST --user <username>:<password>
--header "Content-Type: text/plain;charset=utf-8"--header "Accept: application/json"--data-binary @<filename>
"https://gateway.watsonplatform.net/personality-insights/api/v3/profile"
Я получил это:
$request_headers = array();
$request_headers[] = 'Content-Type: text/plain;charset=utf-8';
$request_headers[] = 'Content-Language: en';
$request_headers[] = 'Accept-Language: en';
$simple_data = 'washingtonpost by the intelligence community';
curl_setopt_array( $ch2, array(
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $simple_data,
CURLOPT_HEADER => $request_headers,
CURLOPT_USERPWD => 'XXXX:YYYY',
)
);
$response2 = curl_exec( $ch2 );
Мой код не учитывает это --data-binary
часть, но я не уверен, как «перевести» это на PHP. Кроме того, можно ли использовать двоичные данные с открытым текстом (API принимает их) вместо JSON?
Что у вас уже есть --data-binary
эквивалент. Увидеть CURLOPT_POSTFIELDS
API документы:
Вы должны убедиться, что данные отформатированы так, как вы хотите, чтобы сервер их получал. libcurl не будет преобразовывать или кодировать его для вас в любом случае.
Сравните это с документы для командной строки --data-binary
вариант:
Это отправляет данные точно так, как указано, без какой-либо дополнительной обработки.
Что касается второй части вашего вопроса:
можно использовать двоичный файл данных с простым текстом (API принимает его) вместо JSON
Да, как для --data-binary
из командной строки и CURLOPT_POSTFIELDS
из API.
Других решений пока нет …