Перевод «двоичных данных» из cURL в переполнение стека

Мне нужно воссоздать это в 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?

3

Решение

Что у вас уже есть --data-binary эквивалент. Увидеть CURLOPT_POSTFIELDS API документы:

Вы должны убедиться, что данные отформатированы так, как вы хотите, чтобы сервер их получал. libcurl не будет преобразовывать или кодировать его для вас в любом случае.

Сравните это с документы для командной строки --data-binary вариант:

Это отправляет данные точно так, как указано, без какой-либо дополнительной обработки.

Что касается второй части вашего вопроса:

можно использовать двоичный файл данных с простым текстом (API принимает его) вместо JSON

Да, как для --data-binary из командной строки и CURLOPT_POSTFIELDS из API.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]