获取HTTP 404响应的内容是否比通过tcp直接访问主机更简单?
这是404响应的示例,内容为:
HTTP/1.1 404 Object Not Found
Server: CouchDB/1.3.0 (Erlang OTP/R15B03)
Date: Wed, 24 Jul 2013 08:32:50 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 41
Cache-Control: must-revalidate
{"error":"not_found","reason":"missing"}
答案 0 :(得分:3)
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 protocol(两个版本,一个uses cURL,另一个使用customised HTTP scheme,但效果不佳。虽然适用于Rebol 2.我计划使用Rebol 3版本。
答案 1 :(得分:0)
Christopher Ross-Gill为Rebol创建了一个REST协议,允许简单访问所有标头甚至处理OAuth。看看这里的细节。
http://www.ross-gill.com/page/REST_Protocol
不幸的是,它目前只适用于Rebol 2,它取决于对http请求使用curl。