4

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"}
4

2 に答える 2

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 プロトコルを持っています(2 つのバージョン、1 つは cURL を使用し、もう 1 つはカスタマイズされた HTTP スキームを使用しますが、うまく機能しません)。ただし、Rebol 2 用です。Rebol 3 バージョンの計画があります。

于 2013-07-24T16:11:37.350 に答える
0

Christopher Ross-Gill は、Rebol 用の REST プロトコルを作成しました。これにより、すべてのヘッダーへの簡単なアクセスが可能になり、OAuth も処理されます。詳細はこちらをご覧ください。

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

残念ながら、現時点では Rebol 2 のみであり、http リクエストでの curl の使用に依存しています。

于 2013-07-24T10:11:32.527 に答える