- PR -

HttpWebResponseにおけるpostデータについて

1
投稿者投稿内容
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-01-03 20:13
こんばんは

HttpWebResponse関連のクラスを利用して、バッチプログラムにて
他サーバとhttp通信を行うプログラムを作成しています。

下記コードのように
postStream.Write(bPostDataData, 0, bPostDataData.Length)
という形でpostデータを送信していますが、
ブラウザから実行されたのと同じ形をとるにはどのような形式で
バッファーデータ(下記コードの場合、bPostDataData)を組み立てればいいのでしょうか?
ブラウザからの場合、nameとinputvalueが自動的にpostされるのですがそのデータ形式が
よく分からないのです。

よろしくお願いします。


下記に参考までに今のソースコードを入れておきます。

Dim dataStream As Stream = Nothing
Dim reader As StreamReader = Nothing
Dim response As HttpWebResponse = Nothing

Dim strURL As String = "http://localhost/Default.aspx"

Dim enc As Encoding = Encoding.GetEncoding("Shift-JIS")

Dim PostData As String = "任意のデータ"
Dim bPostDataData As Byte() = Encoding.GetEncoding("Shift-JIS").GetBytes(PostData)

Dim request As HttpWebRequest = CType(WebRequest.Create(strURL), HttpWebRequest)

request.Credentials = CredentialCache.DefaultCredentials

request.Method = "POST"
request.CookieContainer = c
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = bPostDataData.Length
request.Headers.Add("a", "b")

Dim postStream As Stream = request.GetRequestStream()
postStream.Write(bPostDataData, 0, bPostDataData.Length)
postStream.Close()

response = CType(request.GetResponse(), HttpWebResponse)
Console.WriteLine(response.StatusDescription)
dataStream = response.GetResponseStream()
reader = New StreamReader(dataStream, enc)
Dim responseFromServer As String = reader.ReadToEnd()
MessageBox.Show(responseFromServer)

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-01-04 03:18
http://www.atmarkit.co.jp/fdotnet/dotnettips/318webpost/webpost.html
ここが参考になりますか?

引用:
ブラウザから実行されたのと同じ形をとるにはどのような形式で
バッファーデータ(下記コードの場合、bPostDataData)を組み立てればいいのでしょうか?

[キー]=[値]を&で区切った形式ですね。

引用:
ブラウザからの場合、nameとinputvalueが自動的にpostされるのですがそのデータ形式が
よく分からないのです。

Default.aspxにPOSTするFormがあるページがあるということですか?
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-01-05 00:03
ありがとうございました。

引用:

[キー]=[値]を&で区切った形式ですね。
Default.aspxにPOSTするFormがあるページがあるということですか?



今は特にそのようなページはありません。
データのバッチ転送に利用する予定ですが、
Postデータを一般的な形式にすればサーバサイドのアプリは
Pageのあるアプリと同じ方式でデータを取り出すことが出来るのでは?
という思いからです。

ちなみに、今はpostデータはcsvデータ形式にし、
サーバサイドは何列目か?という判断で取り出しています。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-01-05 09:39
引用:

[キー]=[値]を&で区切った形式ですね。



値は url encode しておく必要があります。

引用:

データのバッチ転送に利用する予定ですが、



単純な名前と値の集合だけなら簡単ですが、ファイルイメージを送信する場合は話が違ってきます。

"FORM INPUT TYPE="FILE" 形式" あたりをキーワードにして検索すれば、仕様を説明しているページが見つかると思います。

↑のキーワードで検索して見つかったページですが

http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/multdisp.html

に簡単な説明がありました。(ここから実装するのは無理そうですが)

一応念のためですが、Web 関係の「ちゃんとした」技術仕様が知りたい場合は

w3c のサイト
http://www.w3.org/

を参照してください。

[ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2007-01-05 17:33 ]
1

スキルアップ/キャリアアップ(JOB@IT)