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 件のコメント :
コメントを投稿