2009-07-08 11 views
1

私はIIS5.1/ASP-classic(XP-Pro開発ボックス)の下でRESTインターフェイスを実装しようとしています。これまでのところ、PUT HTTPメソッドで要求コンテンツ変数を取得するために必要な呪文は見つかりませんでした。私は私のASPコードにDepartmentName値を読みますかIIS5.1およびASP-classicのHTTP PUT要求のパラメータ取得?

PUT http://localhost/rest/default.asp?/record/1336 

Department=Sales&Name=Jonathan%20Doe%203548 

:よう要求して

Request.Formは、POSTリクエストのみをサポートするようです。 Request.ServerVariablesはヘッダー情報のみになります。

var byteCount = Request.TotalBytes; 
var binContent = Request.BinaryRead(byteCount); 
var myBinary = ''; 

var rst = Server.CreateObject('ADODB.Recordset'); 
rst.Fields.Append('myBinary', 201, byteCount); 
rst.Open(); 
rst.AddNew(); 
rst('myBinary').AppendChunk(binContent); 
rst.update(); 
var binaryString = rst('myBinary'); 
var contentString = binaryString.Value; 

var parameters = {}; 
var pairs = HtmlDecode(contentString).split(/&/); 
for(var pair in pairs) { 
    var param = pairs[pair].split(/=/); 
    parameters[param[0]] = decodeURI(param[1]); 
} 

Request.QueryStringは、私ははBinaryReadの道を行き、下の最初の試みを思い付いたAnthonyWJonesとARSからの応答に基づいて、コンテンツのいずれか...


に私を取得していませんThis blog post by David Wang、およびHtmlDecode()の機能は、blogs.msdn.comのAndy Oakleyからも取りました。

この分割と手動でエスケープすると、ここには1001個のバグがありますが、少なくとも私は再び移動しています。ありがとう。

答えて

0

残念ながら、ASPはRESTのコンセプトよりもかなり前になっています。

RESTFullに行く場合は、URLエンコードされたフォームデータを使用しないことを検討します。代わりにXMLを使用してください。あなたがXMLエンティティボディを受け入れることができるようになります: -

Dim xml : Set xml = CreateObject("MSXML2.DOMDocument.3.0") 
xml.async = false 
xml.Load Request 

そうでなければあなたはRequestオブジェクトにはBinaryReadを使用して、苦労したバイト配列をテキストに変換する必要がありますその後、デコードと一緒に自分自身をコードするURLを解析しますエスケープシーケンス。

+0

を、ボディ・コンテンツ・フォーマットかなり固定されています。私はバイナリ読み取りを追いかける必要があるように見えます。 – aczarnowski

関連する問題