curl to php чтобы опубликовать JSON и аудио

1

Я пытаюсь преобразовать команду curl, которая будет использоваться в php-скрипте

   curl -k -F "request={'timezone':'America/New_York','lang':'en'};type=application/json" -F "[email protected];type=audio/wav" -H "Authorization: Bearer x" -H "ocp-apim-subscription-key:x" "http://example.com"

и вот мой php-скрипт

<?
$data = array("timezone" => "America/New_York", "lang" => "en", "voiceData" => "d8696c304d09eb1.wav");                                                                    
$data_string = json_encode($data);                                                                                   
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-type: application/json',
   'Authorization: Bearer x',
   'ocp-apim-subscription-key:x')
);
$result = curl_exec($ch);
?>

Я понимаю, что бит аудиофайла отправки не прав, но я не могу найти пример, как опубликовать его.

Я отредактировал это в ответ на постовые поля, но если я включу $ ch, я не получаю никакого вывода, если не включать вывод, жалуется, что нет почтового запроса. Есть идеи?

<?
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'Content-type: application/json',
   'Authorization: Bearer x',
   'ocp-apim-subscription-key:x')
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 
    array('request' => json_encode(array('timezone' => 'America/New_York', 'lang' => 'en')),
          'voicedata' => new CURLFile("d8696c304d09eb1.wav")
    )
);
$result = curl_exec($ch);
echo $result;
?>
  • 0
    Я не уверен на 100%, но я бы попробовал: $data = array("request" => json_encode(array("timezone" => "America/New_York", "lang" => "en")) . ";type=application/json", "voiceData" => "@d8696c304d09eb1.wav;type=audio/wav"); Затем удалите $data_string и просто используйте $data в строке CURLOPT_POSTFIELDS
  • 0
    Большое спасибо за ответ! У меня есть отправка данных сейчас, что является плюсом, но я получаю ошибку фазы json, поэтому мне придется продолжать смотреть на проблему, знаете ли вы, если голосовые данные должны быть относительно этого места на сервере
Показать ещё 1 комментарий
Теги:
curl

1 ответ

0
Лучший ответ

В поле POST отсутствует request=. Кроме того, отправка файлов с использованием @filename устарела, вы должны использовать класс CURLFile.

curl_setopt($ch, CURLOPT_POSTFIELDS, 
    array('request' => json_encode(array('timezone' => 'America/New_York', 'lang' => 'en')),
          'voicedata' => new CURLFile("d8696c304d09eb1.wav")
    )
);
  • 0
    С curl_setopt он ожидает, что 3 пропустят $ ch, но я рисую пробел с ним внутри и без него, поскольку он не публикуется. Предупреждение: curl_setopt () ожидает ровно 3 параметра, 2 приведены в

Ещё вопросы

Сообщество Overcoder
Наверх
Меню