目前还没有适用于Coldfusion的官方Vimeo API SDK,所以我根据官方的PHP代码编写了一个。最后,我们只对Vimeo收到请求时看到的JSON字符串感兴趣,对吧?我正在尝试执行PULL方法,并且在运行脚本时收到视频ID,链接,“处理”状态等。该视频在我的帐户中显示为“待处理”。这是我的请求的JSON内容:标题:
POST https://api.vimeo.com/me/videos
{
"Content_Type": "application/json",
"Authorization": "Bearer 7b8686f6d7cb....65990",
"Accept": "application/vnd.vimeo.*+json; version=3.4"
}
身体:
{
"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。
解决方案:通过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”。