Запрос «pull» upload.approach возвращает сообщение об успешном завершении, но содержимое недействительно - PullRequest
0 голосов
/ 13 марта 2019

Официального SDK Vimeo API для Coldfusion не существует, поэтому я написал его на основе официального кода PHP.В конце концов, нас интересует только то, что JSON-строка видит Vimeo, когда получает запрос в любом случае, верно?Я пытаюсь использовать подход PULL, и я получаю видео идентификатор, ссылку, статус "обработки" и т. Д. При запуске сценария.Видео отображается в моей учетной записи в сети как "В ожидании".Это JSON-содержимое моего запроса: Заголовки:

POST https://api.vimeo.com/me/videos
{ 
  "Content_Type": "application/json",
  "Authorization": "Bearer 7b8686f6d7cb....65990",
  "Accept": "application/vnd.vimeo.*+json; version=3.4"
}

body:

{
  "upload": {
    "approach":"pull",
    "size":30003213,
    "link":"https://mysite.me/api/index.cfm/video?PK=Na6z6ZZMQ&SI=45rtt4423"},
    "name":"Employee1.mp4"
  }
}

Ответ, который я получаю от Vimeo, включает в себя следующие данные (очевидно, это не весь ответ):

{
  "Statuscode": "201 Created",
  "Filecontent": {
    "uri":"/videos/3...393",
    "name":"Untitled",
    "description":null,
    "link":"https://vimeo.com/3...393"
  },
  "app":{
    "name":"My Vimeo App Name",
    "uri":"/apps/14...6"
  },
  "status":"uploading",
  "resource_key":"0b83....d49dc",
  "upload":{
    "status":"in_progress",
    "complete_uri":null,
    "approach":"post",
    "size":null, 
    "redirect_url":null,
    "link":null
  },
  "transcode":{"status":"in_progress"}
}

Я не могу заставить Vimeo распознать это как «вытягивающий» подход, ни распознать имя файла, размер и т. Д. Похоже, что запрос выполнен успешно, но видеов «Моих видео» на Vimeo никогда не завершает загрузку или транскодирование, не имеет имени, не учитывает мои настройки конфиденциальности или других параметров и, похоже, является некоторой ошибкой обработки.

Я буду радподелиться некоторыми кодами ColdFusion с любым опытным пользователем, но я чувствую, что проблема, вероятно, связана с скомпилированным JSON, а не с ColdFusion.

1 Ответ

0 голосов
/ 22 апреля 2019

Решение: при отправке запросов через ColdFusion, вместо отправки содержимого JSON, например:

<cfhttpparam type="body" value="{"upload":{"approach":"pull","size":30003213,"link":"https://example.com/api/index.cfm/video?PK=Na6z6Zp4ca&CK=4EP56DM566&SI=6868"},"name":"EmployeeProfile.mp4"}" />

параметры должны быть отправлены так:

<cfhttpparam type="formField" encoded="false" name="upload.approach" value="pull" />
<cfhttpparam type="formField" encoded="false" name="upload.size" value="30003213" />
<cfhttpparam type="formField" encoded="false" name="upload.link" value="https://example.com/api/index.cfm/video?PK=Na6z6Zp4ca&CK=4EP56DM566&SI=6868" />

Не знаю почему, но когда вы отправляете запрос POST в Vimeo из ColdFusion, Vimeo не распознает тело JSON cfhttpparam. Вы должны использовать type = "formField".

...