2012-02-28 18 views
1

私のテストでは、servicestackはGETリクエストのクエリ文字列を介して送信されたパラメータを自動的にURLデコードしていますが、POSTリクエストによって送信されたパラメータは自動的にデコードされません。ServiceStack.netでのURLエンコード/デコードの問題

POSTメソッドのHTTPメソッドをチェックしてコードをデコードすることはできますか?

EDIT

私の方法はServicestack.netからRestServiceBaseクラスを実装するクラスから派生しています。

RestServiceBase経由で現在のリクエストからHTTPメソッドを確認する方法はありますか?

+0

あなたはHttpUtility.HtmlEncodeを試しました –

+0

はい、私のサービスは(私が知る限りは)HTTPメソッドを認識していない基本クラスから派生しています。私がGETリクエストでDecodeメソッドを使用すると、問題を引き起こす可能性のあるパラメータを2回効果的にデコードすることになります。 – stephen776

+0

POSTとGETの違いには多少の混乱があるようです。 POSTはURLにパラメータを追加せずにフォームを送信しますが、リクエストの本文にパラメータを送信します。 GETはフォームフィールドをURLに追加するメソッドです。 –

答えて

2

ワイヤフォーマットは何ですか?アプリケーション/ jsonまたはアプリケーション/ x-www-form-urlencodedですか? application/x-www-form-urlencoded Content-Typeのみをエンコードする必要があるためです。

C#ServiceClientを使用してPOSTを実行している場合、POST/application-x-www-form-urlencodedはサポートされていません.JSONやXMLなど(ServiceClientに依存します)代わりにURLエンコーディングを必要としません。

jQueryからPOSTしている場合、自動的にURLエンコードが行われます。

いずれにせよ、HTTP要求ペイロードを送信して、何が起こっているかを確認できますか。

0

私はクライアント側でjQueryのエンコーディングを使用します。

var sear = htmlEncode($("#Search").html()); 
. 
. 
. 
function htmlEncode(value) { 
    if (typeof (value) != "undefined") { 
     return $('<div/>').text(value).html(); 
    } 
    return ""; 
} 

function htmlDecode(value) { 
    if (typeof (value) != "undefined") { 
     return $('<div/>').html(value).text(); 
    } 
    return ""; 
}