其实它的接口说的挺清楚的,就是 Content-Type
不对,你自己发起请求的时候设置了这个头为 application/json
,所以接口认为你不是 post 了一个表单,就告诉你 415 不支持这种请求体的数据格式。当然普通表单的 Content-Type
是 application/x-www-form-urlencoded
,不是 multipart/form-data
,也是不对的 Orz,在普通浏览器里只有附带文件的时候 Content-Type
才会变成 multipart/form-data
,我怀疑 Net::HTTP
本身的逻辑也是这样子的;也不建议你自己把 Content-Type
设置为 multipart/form-data
,因为其实它的格式是这样子的:
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
所以当然 @rei 的方案应该是比较好的。
以及,这个接口确实是奇葩接口,你不用觉得沮丧。原因就是我上面说的,如果真的是要求以 form 形式提交的话,不支持 application/x-www-form-urlencoded
是不对的。
#5 楼 @suffering 嗯……经过 @Rei 的提示以后我才想到要去调整 Ruby 的加载路径列表……
非常谢谢你回答我!
自己顶一下,找了不少资料似乎都没有这方面的说法,求大家为我解释一下……
很奇怪,重新克隆下来 bundle install
后就不慢了……
#13 楼 @andor_chen 那我只买了其中的 epub 版本呢?会收到优惠码吗?
@chairy11 各大浏览器实现 audio 的时候似乎 bug 很多,我最近也被这东西坑的死去活来的 ^_^
你试试监听事件 canplaythrough
,我获得 duration
监听的都是这个事件