upload.approach "pull" 请求 returns 成功消息,但内容无效

upload.approach "pull" request returns success message, but the content isn't valid

不存在用于 Coldfusion 的官方 Vimeo API SDK,因此我根据官方 PHP 代码编写了一个。最后,我们只对 Vimeo 在收到请求时看到的 JSON 字符串感兴趣,对吧? 我正在尝试采用 PULL 方法,当我 运行 脚本时,我收到视频 ID、link、状态 "processing" 等。该视频在我的在线帐户中显示为 "Pending"。这是我请求的 JSON 内容: Headers:

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 将此识别为 "pull" 方法,也无法识别文件名、大小等。看起来请求成功,但 [=29] 中的视频=] 在 Vimeo 上从未完成上传或转码,没有名字,不尊重我的隐私或其他选项设置,似乎是某种处理错误。

我很乐意与任何有经验的人分享一些 ColdFusion 代码,但我觉得问题可能在于编译的 JSON 而不是 ColdFusion。

解决方法: 当通过 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" />

不知道为什么,但是当您从 ColdFusion 向 Vimeo 发送 POST 请求时,Vimeo 无法识别 cfhttpparam 的任何 JSON 主体。你必须使用type="formField".