Rebol HTTP 方案在设计时并没有考虑到这一点,它旨在以您在浏览器中的方式阅读内容,而不是通过 HTTP 提供服务。
话虽如此,您可以破解协议以颠覆 Rebol 2 处理不同响应代码的方式:
in-http-scheme: func [does [block!]][
do bind :does bind? last body-of get in system/schemes/http/handler 'open
]
in-http-scheme [
remove-each [code response] response-actions [find [400 403 404] code]
append response-actions [400 success 403 success 404 success]
]
这里需要注意的是 HTTP 协议必须已经启动(任何 http 端口打开/读取)。 response-actions
在http没有启动的情况下仍然可以访问:
select body-of get in system/schemes/http/handler 'open quote response-actions:
您可以获得最后的响应行:
in-http-scheme [response-line]
或者,您将需要为 HTTP 上的服务设计的方案。我有一个REST 协议(两个版本,一个使用 cURL,一个使用自定义的 HTTP 方案,但效果不佳)。虽然适用于 Rebol 2。我有 Rebol 3 版本的计划。