2013-07-24 1 views
4

Есть ли более простой способ получения содержимого ответа HTTP 404, чем прямой доступ к хосту через tcp?Как получить ответный ответ HTTP 404 Ответ

Это образец 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"} 

ответ

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.

+0

Спасибо за ваш ответ Крис. Одна маленькая точка, как Firefox, так и Chrome отображает контент ответа HTTP, хотя он имеет код ответа 404. В IE9 отображается стандартное сообщение, не найденное. Я предполагаю, что это случай, когда сеть продвинулась, но не все до сих пор догнали. Подключение через TCP кажется лучшим вариантом для моего варианта использования. –

+0

Действительно, я должен был предусмотреть «способ, которым вы были бы в браузере 15 лет назад». – rgchris

0

Кристофер Росс-Гилл создал протокол REST для Rebol, который позволяет простой доступ ко всем заголовкам и даже обрабатывает OAuth. Взгляните на подробности здесь.

http://www.ross-gill.com/page/REST_Protocol 

К сожалению, это только для Rebol 2 в настоящий момент, и это зависит от использования завитка для http-запросов.

+0

Спасибо за ответ Джон. Я считаю, что протокол REST ChrisRG вызывает завиток. Я действительно ищу решение только для REBOL, которое нужно сбрасывать до поддержки протокола tcp REBOL. Кстати, я действительно хочу получить контент больше, чем заголовки. –

+0

У меня есть версия, которая является Rebol-only (связана в [этой статье] (http://www.ross-gill.com/page/REST_Protocol)). Это не так хорошо (решение завитка работает лучше). – rgchris