2016-12-08 1 views
1

私はアップロードメディアをサポートするためにRoss-GillのTwitter API for REBOL2を更新しようとしていました。そのソース、REBOLの料理の本、コーデックのサイト、そしてここでの他の質問から、read/customがウェブサイトへのPOSTデータの好ましい方法だと私は理解しています。Rebol2の読み取り/カスタムのドキュメントは?

しかし、実際のドキュメントはread/customで見つかりませんでした。例:multipart/form-dataの送信をサポートしていますか? (私は手動で各部分を構成することでこれを回避することができましたが、Twitterの終わりにあるすべての画像ファイルでは機能しないようで、ちょっとしたハックです)。 read/customHTTP/1.0 200 OK応答のテキストのみを返しますか? (私はHTTP/1.0 202 Acceptedを受け取って、結果のデータを読む必要があるので、問題があります。 が、to-stringを使用してデータを変換せずにバイナリデータを正しく送信しないように見える理由はありますか?

TL; DR:REBOL2のread/customについての良い文書はありますか?あるいは、read/customは基本的なもので、POSTsを意味し、ポートを使用してHTTP応答を手動で処理する必要がありますか?

答えて

0

あなたは正しく推測しましたが、read/customは、Webフォームデータのみを処理する単純なHTTP投稿(バイナリデータで失敗する理由)を意味します。それについての公式の文書はありません。そこ

probe system/schemes/HTTP 

あなたは/custom洗練がpostheader(カスタムHTTPヘッダを設定するための)二つのキーワードを、サポートしていることを見ることができます。しかし、それはあなたがHTTPの実装のソースコードにアクセスできるような問題ではありません。また、両方のキーワードを使用しても、Content-Typeは何があっても(つまり、おそらく、バイナリデータがサーバーによって拒否される理由は、提供されたMIMEタイプが間違っているため)application/x-www-form-urlencodedに強制されます。

これを回避するには、HTTPオブジェクトを保存し、ニーズに合わせて実装を変更してリロードします。

省:

リロード
save %http-scheme.r system/schemes/HTTP 

system/schemes/HTTP: do load %http-scheme.r 

をあなただけのHTTPコードにハードコードされたContent-Type設定を無効にして、headerキーワードを使用して独自のものを提供する場合、それが動作するはずですバイナリデータの場合でも、細かいこと:

read/custom <url> [header [Content-Type: <...>] post <data>] 

希望彼の助けになる。

+0

HTTPオブジェクトを変更するのは、まさに私が必要なものです。ありがとうございます。私は、バイナリデータが正しく変換されないようなコンバージョンがあるかどうかを調べてみる必要があります(最初にto-stringで変換しない限り、実際のバイトの2倍を取っていました)。 – Tectorum

+0

これは、データを文字列に変換する、明示的な、あるいはより暗黙的な 'form'呼び出しのように見えます。あなたがそれを見つけることができない場合は、私に知らせる、私はそれをすばやく見せます。 – DocKimbel

関連する問題