C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Request.InputStreamの値取得について


(過去ログ 15 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■5121 / inTopicNo.1)  Request.InputStreamの値取得について
  
□投稿者/ さる (1回)-(2007/07/05(Thu) 09:14:57)

分類:[VB.NET (ASP.NET)] 

ASP.NETのPOSTデータ取得時について教えてください。

処理として、クライアントから送信されたデータをASP.netで取得します。

■クライアント側
<input type="text" name="messege" />
<input type="submit" name="button" />

例として、上記の場合、ボタン押下でテキスト欄に入力した項目を取得する際、

 stRequest = New StreamReader(Request.InputStream(), Encoding指定)
 aaaa = stRequest.ReadToEnd

という方法で取得します。
ここで、[aaaa]にセットされる値は、「messege=○○&button=クエリ送信」となります。

○○の値のみを取得したいのですが、ASP.NET(VB.NET)で行う場合、どのような方法がスマートなのでしょうか?
また、「messege」の部分は可変とし、入力欄が複数になることも想定されます。

Request.Form("messege")で取得することも可能ですが、Encoding指定が必須となるため、使用できません。

みなさんの意見を聞かせてください。
宜しくお願い致します。
引用返信 編集キー/
■5122 / inTopicNo.2)  Re[1]: Request.InputStreamの値取得について
□投稿者/ Moo (61回)-(2007/07/05(Thu) 09:23:49)
Moo さんの Web サイト
> Request.Form("messege")で取得することも可能ですが、Encoding指定が必須となるため、使用できません。

ここについてもう少し詳しくお聞かせください。
Request.Form("messege")で問題ないと思っていますが
POSTを送信するページのエンコード(シフト JIS/EUC/UTF-8など)が
特定できないということでしょうか。

引用返信 編集キー/
■5124 / inTopicNo.3)  Re[2]: Request.InputStreamの値取得について
□投稿者/ さる (2回)-(2007/07/05(Thu) 10:06:18)
No5122 (Moo さん) に返信
>
>>Request.Form("messege")で取得することも可能ですが、Encoding指定が必須となるため、使用できません。
>
> ここについてもう少し詳しくお聞かせください。
> Request.Form("messege")で問題ないと思っていますが
> POSTを送信するページのエンコード(シフト JIS/EUC/UTF-8など)が
> 特定できないということでしょうか。

ありがとうございます。
Request.Form("messege")での取得時ですが、クライアントのエンコードは決まっていますが、
「54936(GB18030)」という特殊コードです。
Request.Form("messege")では、一定の文字コード(UTF-8?)の場合しか取得できないと思っていました。

Request.Form("messege")を使用して、特定の文字コード(または、文字コード指定)で取得する方法があるのでしょうか?

Session.CodePage = 54936
aaaa = Request.Form("messege")

としても、文字化けが発生しました。

stRequest = New StreamReader(Request.InputStream(), GBコード指定)
  aaaa = stRequest.ReadToEnd

では、正確に取得できます。

尚、aspxファイルの保存形式は「UTF-8」固定です。
処理として、GB18030コードで受け取って、他のASPXに「UTF-8」でPOSTし、結果をUTF-8でうけとって、RESPONSEをGB18030で返却する処理です。

宜しくお願いします。
引用返信 編集キー/
■5125 / inTopicNo.4)  Re[3]: Request.InputStreamの値取得について
□投稿者/ IIJIMAS (6回)-(2007/07/05(Thu) 10:38:21)
No5124 (さる さん) に返信

試していませんが、
Request.ContentEncodingプロパティとか
web.configのglobalization 要素のrequestEncoding属性とかを
変えてみるとかはどうでしょうか。

HttpRequest.ContentEncoding プロパティ
http://msdn2.microsoft.com/ja-jp/library/system.web.httprequest.contentencoding(VS.80).aspx
globalization 要素 (ASP.NET 設定スキーマ)
http://msdn2.microsoft.com/ja-jp/library/hy4kkhe0(VS.80).aspx

引用返信 編集キー/
■5132 / inTopicNo.5)  Re[3]: Request.InputStreamの値取得について
□投稿者/ Mr.T (68回)-(2007/07/05(Thu) 12:05:08)
Mr.Tです、こんにちは。
#書いたと思ったのだけど、勘違いかしらん?

> Session.CodePage = 54936
> aaaa = Request.Form("messege")
>
> としても、文字化けが発生しました。
>
> stRequest = New StreamReader(Request.InputStream(), GBコード指定)
>   aaaa = stRequest.ReadToEnd
>
> では、正確に取得できます。

別の文字コードに変換したいのであれば、
Request.Form("messege")をEncoding.Convert()してみてはどうでしょうか。

http://msdn2.microsoft.com/ja-jp/library/system.text.encoding.getencodings(VS.80).aspx
のサンプルには指定できるエンコードの一覧もあります。


引用返信 編集キー/
■5133 / inTopicNo.6)  Re[4]: Request.InputStreamの値取得について
□投稿者/ さる (3回)-(2007/07/05(Thu) 12:17:20)
No5125 (IIJIMAS さん) に返信
> ■No5124 (さる さん) に返信
>
> 試していませんが、
> Request.ContentEncodingプロパティとか
> web.configのglobalization 要素のrequestEncoding属性とかを
> 変えてみるとかはどうでしょうか。
>
> HttpRequest.ContentEncoding プロパティ
> http://msdn2.microsoft.com/ja-jp/library/system.web.httprequest.contentencoding(VS.80).aspx
> globalization 要素 (ASP.NET 設定スキーマ)
> http://msdn2.microsoft.com/ja-jp/library/hy4kkhe0(VS.80).aspx
>


web.configのglobalization 要素のrequestEncoding属性を指定することで、
Request.Form("messege")
で取得できました。
ありがとうございます。

ところで、

stRequest = New StreamReader(Request.InputStream(), GBコード指定)
  aaaa = stRequest.ReadToEnd

の場合、URLエンコードされないのに対して、
Request.Form("messege")
は自動エンコードなんでしょうか?

なにはともあれ、お世話になりました!!
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -