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