Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http Rebol2和x27的文件;阅读/定制?_Http_Twitter_Rebol2 - Fatal编程技术网

Http Rebol2和x27的文件;阅读/定制?

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响应上返回文本?(看起

我一直在尝试更新Ross Gill的,以支持上传媒体。通过查看其来源、REBOL cookbook、CodeConsious网站以及这里的其他问题,我的理解是
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对象正是我所需要的,谢谢。我必须查看是否存在导致二进制数据转换错误的转换(除非首先将其转换为字符串,否则需要两倍的实际字节)。这看起来像是一个显式调用,或者更可能是隐式调用,将数据转换为字符串。如果你找不到,请告诉我,我会快速查看。