Http Rebol2和x27的文件;阅读/定制?
我一直在尝试更新Ross Gill的,以支持上传媒体。通过查看其来源、REBOL cookbook、CodeConsious网站以及这里的其他问题,我的理解是Http Rebol2和x27的文件;阅读/定制?,http,twitter,rebol2,Http,Twitter,Rebol2,我一直在尝试更新Ross Gill的,以支持上传媒体。通过查看其来源、REBOL cookbook、CodeConsious网站以及这里的其他问题,我的理解是read/custom是POST数据到网站的首选方式 但是,我还没有找到任何关于read/custom的真正文档。例如:它是否支持发送多部分/表单数据?(我已经通过手动编写每个部分来解决这个问题,但它似乎不适用于Twitter端的所有图像文件,这有点像黑客)。read/custom是否仅在HTTP/1.0 200 OK响应上返回文本?(看起
read/custom
是POST
数据到网站的首选方式
但是,我还没有找到任何关于read/custom
的真正文档。例如:它是否支持发送多部分/表单数据?(我已经通过手动编写每个部分来解决这个问题,但它似乎不适用于Twitter端的所有图像文件,这有点像黑客)。read/custom
是否仅在HTTP/1.0 200 OK
响应上返回文本?(看起来是这样,当我接收到HTTP/1.0 202 Accepted
并需要读取结果数据时,这是有问题的)。如果不使用将数据转换为字符串,则读取/自定义/二进制
似乎无法正确发送二进制数据,这有什么原因吗
TL;DR:REBOL2的read/custom
有好的文档吗?或者,read/custom
是否仅用于基本的POST
s,我是否应该使用端口并手动处理HTTP响应?您猜对了,read/custom
是用于简单的HTTP POST,仅处理web表单数据(这就是为什么它在二进制数据上会失败)。没有官方文件。但这不是问题,因为您可以访问HTTP实现的源代码:
probe system/schemes/HTTP
在这里您可以看到,/custom
优化支持两个关键字,post
和header
(用于设置自定义HTTP头)。此外,即使您同时使用这两个关键字,内容类型
也将被强制执行应用程序/x-www-form-urlencoded
(这可能是服务器拒绝二进制数据的原因,因为提供的mime类型错误)
为了解决这个问题,您可以保存HTTP对象,修改其实现以满足您的需要,然后重新加载它
保存:
save %http-scheme.r system/schemes/HTTP
重新加载:
system/schemes/HTTP: do load %http-scheme.r
如果您只是在HTTP代码中禁用硬编码的内容类型
设置,然后使用标题
关键字提供您自己的设置,那么即使使用二进制数据,也应该可以正常工作:
read/custom <url> [header [Content-Type: <...>] post <data>]
read/custom[标题[内容类型:]post]
希望这有帮助。您猜对了,读取/自定义
用于简单的HTTP帖子,只处理web表单数据(这就是为什么它在二进制数据上会失败的原因)。没有官方文件。但这不是问题,因为您可以访问HTTP实现的源代码:
probe system/schemes/HTTP
在这里您可以看到,/custom
优化支持两个关键字,post
和header
(用于设置自定义HTTP头)。此外,即使您同时使用这两个关键字,内容类型
也将被强制执行应用程序/x-www-form-urlencoded
(这可能是服务器拒绝二进制数据的原因,因为提供的mime类型错误)
为了解决这个问题,您可以保存HTTP对象,修改其实现以满足您的需要,然后重新加载它
保存:
save %http-scheme.r system/schemes/HTTP
重新加载:
system/schemes/HTTP: do load %http-scheme.r
如果您只是在HTTP代码中禁用硬编码的内容类型
设置,然后使用标题
关键字提供您自己的设置,那么即使使用二进制数据,也应该可以正常工作:
read/custom <url> [header [Content-Type: <...>] post <data>]
read/custom[标题[内容类型:]post]
希望这能有所帮助。修改HTTP对象正是我所需要的,谢谢。我必须查看是否存在导致二进制数据转换错误的转换(除非首先将其转换为字符串,否则需要两倍的实际字节)。这看起来像是一个显式调用,或者更可能是隐式调用,将数据转换为字符串。如果您找不到,请告诉我,我会快速查看。修改HTTP对象正是我所需要的,谢谢。我必须查看是否存在导致二进制数据转换错误的转换(除非首先将其转换为字符串,否则需要两倍的实际字节)。这看起来像是一个显式调用,或者更可能是隐式调用,将数据转换为字符串。如果你找不到,请告诉我,我会快速查看。