VB2005でIPAT通信
Posted on :| コメント (0)
開発中の異常オッズ分析ソフト「シンドローム」 の次期バージョンのために、IPAT通信のクラスライブラリを作成しました。このソフトは、VB2005という.Net Framework2.0上で動作するソフトです。
.Net Frameworkとは、マイクロソフトがWindows向けに公開しているフレームワークで、 巨大なクラスライブラリ群です。一応、.Net Frameworkが動く環境であれば、Linuxでも動くと言うことになっていますが、 基本的にWindowsプラットフォーム専用と考えた方がいいでしょう。
シンプルぱっと2はVB6で作られています。インターネット通信はIEコンポーネントである、 WININET.DLLにより実現しています。そのため、デフォルトの設定はIEに従います。
今回は.Netを使用しているので、.Net Framework2.0のライブラリを利用しました。 さすがに.Netの名前にあるように、ネットワーク関係は充実しています。基本的な命令を組み合わせるだけで、 すぐにCGIにPost出来るようになりました。
Imports System.Net
Public Function PostHttp(ByVal url As String, ByVal post As String) As String
Dim txt As String = ""'■■■ データ取得
Try
Dim byteData As Byte() = System.Text.Encoding.ASCII.GetBytes(post)
Dim request As HttpWebRequestrequest = DirectCast(System.Net.WebRequest.Create(url), HttpWebRequest)
'■■■ POST準備
With request
.Method = "POST"
.ContentType = "application/x-www-form-urlencoded"
.ContentLength = byteData.Length
.UserAgent = "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1)"
.Referer = m_referer'データをPOST送信するためのStreamを取得
Using rs As Stream = .GetRequestStream()
rs.Write(byteData, 0, byteData.Length)
rs.Close()
End Using
End WithDim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
'■■■ 受信処理
If response.StatusCode = HttpStatusCode.OK Then
Using resStream As Stream = response.GetResponseStream()
Dim sr As New System.IO.StreamReader(resStream, m_encode)
txt = sr.ReadToEnd()
sr.Close()
End Using
End If'■■■ エラー
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation Or MsgBoxStyle.OkOnly)
End Trym_referer = ""
Return (txt)End Function
-
postするメッセージはバイト型に変換しておく
-
HttpWebRequestにContentTypeやRefererなど必要な設定を追加する
-
受信はストリームリーダーで一発
-
m_refererはリファラーを文字列で指定しておく
-
ストリームリーダーを使用するときに、文字コードを指定しておく。でないと文字化けする
-
m_encodeが文字コード指定。 実際にはSystem.Text.Encoding.GetEncoding("euc-jp")を指定してある(IPATサーバーの文字コード)
WININET.DLLを使用して、POSTするにはもっと長ったらしい構文が必要なので、.Netは本当に楽です。ちなみに、 SSLで送信するにはURLのスキームをhttpsに変えるだけでいけました。
.Netは文字コードの変換も標準ライブラリでこなしてくれるので、外部に変換用DLL(例: NKF32.DLLなど)を置かなくて良いのが非常に楽です。
コメント
- Search
- 最近の記事
- カテゴリー
- 過去の記事
-
- 2011年05月
- 2011年03月
- 2011年02月
- 2011年01月
- 2010年12月
- 2010年11月
- 2010年10月
- 2010年09月
- 2010年08月
- 2010年07月
- 2010年06月
- 2010年05月
- 2010年04月
- 2010年03月
- 2010年02月
- 2010年01月
- 2009年12月
- 2009年11月
- 2009年10月
- 2009年09月
- 2009年08月
- 2009年07月
- 2009年06月
- 2009年05月
- 2009年04月
- 2009年03月
- 2009年02月
- 2009年01月
- 2008年12月
- 2008年11月
- 2008年10月
- 2008年09月
- 2008年08月
- 2008年07月
- 2008年06月
- 2008年05月
- 2008年04月
- 2008年03月
- 2008年02月
- 2008年01月
- 2007年12月
- 2007年11月
- 2007年10月
- 2007年09月
- 2007年08月
- 2007年07月
- 2007年06月
- 2007年05月
- 2007年04月
- 2007年03月
- 2007年02月
- 2007年01月
- 2006年12月
- 2006年11月
- 2006年10月
- 2006年09月
- 2006年08月
- 2006年07月
- 2006年06月
- 2006年05月
- 2006年04月
- 2006年03月
- 2006年02月
- 2006年01月
- 2005年12月
- 2005年11月
- 2005年10月
- 2005年09月
- 2005年08月
- 2005年07月
- 2005年06月
- 2005年05月
- 2005年04月
- 2005年03月
- 2005年02月
- 2005年01月
- 2004年12月
- 2004年11月
- 2004年10月
- 2004年09月
- All Entries
- Comments
-
- 地震とストレージの関係
永ちゃん (03/18)
吉田章太郎 (03/19)
- 地震の影響
永ちゃん (03/12)
吉田章太郎 (03/13)
- 無茶の代償
副将軍 (02/17)
吉田章太郎 (02/17)
- 本年の展望
yodog (01/09)
吉田章太郎 (01/20)
- ノロウィルス感染
永ちゃん (01/17)
吉田章太郎 (01/20)
- 地震とストレージの関係
- TrackBacks
-
- Powered by