2012-01-18 9 views
1

私は、URLエンコードされた投稿リクエストを介して情報を送信する第三者と協力しており、リクエストを送信するときにデータを受け入れる方法を理解できないようです。ここでASP.NETでC#を使用してURLエンコードされたPOSTリクエストを受け入れる

が自分のサーバログが(私のアドレスと、彼らが送出された情報を取るために作られたいくつかの変更を)要求を提出した後、こう言われる、

[13-01-12 14:52:55][DEBUG]: >> "POST /mypostpage.aspx HTTP/1.1[\r][\n]" 
[13-01-12 14:52:55][DEBUG]: >> "User-Agent: Jakarta Commons-HttpClient/3.0.1[\r][\n]" 
[13-01-12 14:52:55][DEBUG]: >> "Host: mydomain.com[\r][\n]" 
[13-01-12 14:52:55][DEBUG]: >> "Content-Length: 1034[\r][\n]" 
[13-01-12 14:52:55][DEBUG]: >> "Content-Type: application/x-www-form-urlencoded[\r] [\n]" 
[13-01-12 14:52:55][DEBUG]: >> "[\r][\n]" 
[13-01-12 14:52:55][DEBUG]: >>  "Variable1=variable1value&variable2=variable2value&variable3=variable3value" 
[13-01-12 14:53:02][DEBUG]: << "HTTP/1.1 200 OK[\r][\n]" 

、彼らが送信されたデータをつかむために、私は」 Request.QueryStringを使用しようとしています。変数1の値を得るために、私は次のようなものを書くかもしれません:

variable1 = Request.QueryString ["variable1"];

私は明らかに何かを紛失していると確信していますが、なぜこれが機能していないのかについての答えを見つけることができませんでした。私自身でテストするとうまくいきますが、要求を提出すると全く動作しません。要求は何もないように聞こえます。

+0

これは、クエリ文字列ではなく、httpヘッダーのデータを与えるようです。 WebHeaderCollectionをチェックインしてください:http://msdn.microsoft.com/en-us/library/system.net.webheadercollection.aspx –

+1

@ TheSavageこれはヘッダーではなく、本文です。実際にはクエリ文字列*がヘッダーの*なので間違った方法です。 –

答えて

4

Request.QueryStringは、通常、application/x-www-form-urlencodedスキームを使用してエンコードされたリクエストURIからクエリ文字列変数を抽出します。クエリ文字列パラメータはPOSTされた情報を取得しません。

ポストされたデータのコンテンツタイプは、上記のクエリ文字列変数として同じスキームを使用していますが、それらにアクセスするために、あなたは、代わりvariable1 = Request.Form["variable1"];かを使用する必要があり、variable1 = Request.Params["variable1"]; POSTされた値は、クエリ文字列パラメータの累積コレクションが含まれ、クッキーとサーバー変数。

参考

Request.Params又はRequest.Form

POSTおよびアプリケーション/ x-www-form-urlencodedで変数を持つPOSTリクエストをフォーマットクエリ文字列パラメータを使用してGET要求にフォーマットが同一であるにもかかわらず、要求は概念的に異なっているGET同じスキームで。したがって、HttpRequestクラス内のアクセス方法の分離。

EDIT:

HttpRequest.FormとHttpRequest.Params特性は、このように全ての値は、文字列になり、文字列ベースのキーで文字列値を関連付けた、NameValueCollectionを返します。

+0

ありがとう、これは私が必要としていたものです。 – Chronos

+0

@クロノスは助けてうれしい...おそらくあなたは答えを受け入れるべきですlol –

0
string variable1 = Request.Form["variable1"]; 

、彼らが使用しているコンテンツタイプは、HTMLフォームがmethod="post"で使用する2つの形式のいずれか、実際には両者のより一般的であり、Request.Formは両方を解析します。

実際、コンテンツタイプは、トランザクションの終了時に人々の生活を容易にするために選択された可能性があります。

+0

ありがとう!これは参考になります。 – Chronos