PHP CURL - как составить конструкцию?

152
30 июня 2019, 10:00

Как в PHP перевести вот такую конструкцию в запрос Curl?

curl -X POST \
    -H "Authorization: Bearer ${IAM_TOKEN}" \
    -H "Transfer-Encoding: chunked" \
    -o speech.raw \
    --data-urlencode "text=Привет мир" \
    -d "voice=zahar&emotion=good&folderId=${FOLDER_ID}&format=lpcm&sampleRateHertz=48000" \
    https://pi.cloud.net/speech/tts:synthesize > speech.ogg

Не могу разобраться как указывается --data-urlencode

У меня получилось вот пока вот так:

$folder_id = '23232312ASdgf43';
 $url_tts = 'https://pi.cloud.net/speech/tts:synthesize';
    $data_tts = "voice=zahar&emotion=good&format=lpcm&sampleRateHertz=48000&folderId=$folder_id";
    $authorization_cloud = "Authorization: Bearer ".$iam_token;
    $headers[] = $authorization_cloud;
    $headers[] = 'Transfer-Encoding: chunked';
    $ch = curl_init($url_tts);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_tts);
    $result = curl_exec($ch);
    curl_close($ch);
Answer 1

попробуйте так

$folder_id = '23232312ASdgf43';
$url_tts = 'https://pi.cloud.net/speech/tts:synthesize';
$authorization_cloud = "Authorization: Bearer " . $iam_token;
$headers[] = $authorization_cloud;
$headers[] = 'Transfer-Encoding: chunked';
$arrdata = array(
    'voice' => 'zahar',
    'emotion' => 'good',
    'format' => 'lpcm',
    'sampleRateHertz' => '48000',
    'folderId' => $folder_id,
    'text' => 'Привет мир',
    );
$ch = curl_init($url_tts);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arrdata));
$result = curl_exec($ch);
curl_close($ch);
Answer 2

Вот так заработало.

$ch = curl_init();
$text = curl_escape($ch, $post);
curl_setopt($ch, CURLOPT_URL, $url_tts);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "voice=zahar&emotion=good&folderId=$folder_id&format=lpsm&sampleRateHertz=48000&text=$text");
$result = curl_exec($ch);
READ ALSO
Как правильно спарсить точную ссылку из чужого контента?

Как правильно спарсить точную ссылку из чужого контента?

Если вам непонятно что я пишу, прощу прощения за непонятные ошибки, я глухой

121
Как поменять ключ во всех массивах

Как поменять ключ во всех массивах

Изучаю PHP, есть задание: реализовать функцию function($num){}, где $num – массив положительных чисел, количество элементов кратно 3Результат ее выполнение:...

126
Не получается взять текст из QTextEdit

Не получается взять текст из QTextEdit

Прикрепил к изменению текста QTextEdit

165
Бесконечный цикл для индекса типа std::size_t

Бесконечный цикл для индекса типа std::size_t

Почему не работает цикл вида:

159