我一直试图更新Ross-Gill的Twitter API for REBOL2以支持上传媒体。通过查看其来源,REBOL食谱,代码意识网站以及其他问题,我的理解是read/custom
是POST
数据到网站的首选方式。
但是,我还没有找到关于read/custom
的任何真实文档。例如:它是否支持发送multipart/form-data
? (我已经设法通过手动编写每个部分来解决这个问题,但它似乎并不适用于Twitter的所有图像文件,并且有点像黑客)。 read/custom
仅返回HTTP/1.0 200 OK
响应中的文字吗? (看起来如此,当我收到HTTP/1.0 202 Accepted
并需要读取结果数据时,这是有问题的)。是否有read/custom/binary
似乎没有正确发送二进制数据而不使用to-string
转换数据的原因?
TL; DR:在某处REBOL2 read/custom
有没有很好的文档?或者,read/custom
仅适用于基本POST
,我应该使用端口并手动处理HTTP响应吗?
答案 0 :(得分:0)
您猜对了,omega()
仅用于简单的HTTP帖子,仅处理Web表单数据(这就是二进制数据失败的原因)。没有正式文件。但这不是问题,因为您可以访问HTTP实现的源代码:
read/custom
在那里,您可以看到probe system/schemes/HTTP
细化支持两个关键字/custom
和post
(用于设置自定义HTTP标头)。即使您同时使用两个关键字,header
也会被强制为Content-Type
,无论如何(这可能是您的二进制数据被服务器拒绝的原因,因为提供的mime类型是错)。
为了解决这个问题,您可以保存HTTP对象,修改其实现以满足您的需求并重新加载。
保存:
application/x-www-form-urlencoded
重新加载:
save %http-scheme.r system/schemes/HTTP
如果您只是禁用HTTP代码中的硬编码system/schemes/HTTP: do load %http-scheme.r
设置,然后使用Content-Type
关键字提供您自己的设置,它应该可以正常工作,即使使用二进制数据:
header
希望这有帮助。