VB.NETでJSONフォーマットのデータを送受信するクライアントプログラムを作成しました。
通信には.NETFramework4で使用できるHttpWebRequestクラスを使っています。
以下サンプル。
DataContractJsonSerializerクラスを使ってシリアル化、逆シリアル化する。
JSONフォーマット専用のクラスを作成して、DataContractJsonSerializerクラスでシリアライズします。JSONフォーマット用クラス
送信用のJSONフォーマットクラスはこんな感じ。Public Class JsonDataSend
Public Property systemCode() As String
Public Property systemMessage() As String
End Class接続先から返されるJSONは以下のようなイメージで。
{"PostMethodResult":{"Message":"Hello WORLD"}}
受信用のJSONフォーマットクラスはこんな感じ。
Public Class JsonDataRecv
Public Property PostMethodResult As PostResult
End Class
Public Class PostResult
Public Property Message As String
End Class
JSONデータ送受信クライアント
Imports System.Runtime.InteropServices
Imports System.Net
Imports System.Security.Cryptography.X509Certificates
Imports System.Runtime.Serialization.Json
Public Class Class1
Public Function JsonSendClient(ByVal sURL As String, ByVal systemCode As String, ByVal systemMessage As String) As String
''送信データ作成(JSON形式)
Dim sendData As JsonDataSend = New JsonDataSend
sendData.systemCode = systemCode
sendData.systemMessage = systemMessage
''HttpWebRequestインスタンス初期化
Dim req As HttpWebRequest = WebRequest.Create(sURL)
''エンコーディング
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
''POST送信
req.Method = "POST"
''認証情報
req.Credentials = CredentialCache.DefaultCredentials
''Accept HTTPヘッダー
req.Accept = "application/json"
''ContentType HTTPヘッダー
req.ContentType = "application/json"
''JSONデータシリアライズ用
Dim jsonSerializer As DataContractJsonSerializer = Nothing
''要求データ書き込み
Using reqStream As System.IO.Stream = req.GetRequestStream
jsonSerializer = New DataContractJsonSerializer(GetType(JsonDataSend))
jsonSerializer.WriteObject(reqStream, sendData)
End Using
''リソースからの応答取得
Dim resp As HttpWebResponse = req.GetResponse
''応答本文読み取り
Dim body As String = String.Empty
Using respStream As System.IO.Stream = resp.GetResponseStream
Using reader As New System.IO.StreamReader(respStream)
body = reader.ReadToEnd
End Using
End Using
''受信データ(JSON)をデシリアライズ
Dim recvJson As JsonDataRecv
jsonSerializer = New DataContractJsonSerializer(GetType(JsonDataRecv))
Using stream As New IO.MemoryStream(Text.Encoding.UTF8.GetBytes(body))
recvJson = DirectCast(jsonSerializer.ReadObject(stream), JsonDataRecv)
End Using
Return recvJson.PostMethodResult.Message
End Function
End Class
まとめ
.NETFramework4.5以上であればHttpClientクラスが使えるので、もっと簡単に書けます。上記サンプルは.NETFramework4以前の環境でも動作するように作りました。
SSL通信する場合は、例によって「信頼されないSSL証明書の回避」が必要です。
以上

0 件のコメント :
コメントを投稿