MWSサブスクリプションAPIのAnyOfferChanged通知をAmazon SQSに送信する設定が完了しました。
Amazon SQSからAWSで通知を取得するサンプルアプリを作成しました。
そして、Amazon SQSから取得したメッセージをXsd2Codeにより、VB.netのクラスに変換することができるようになりました。
スポンサーリンク
XML→XSD→Classと変換できたので、簡単なコードにより、Amazon SQS のメッセージをデシリアライズしてクラスに取り込むことが可能なはずです。
いろいろコードを書いても、エラー(符号なしバイト型に対して値が大きすぎるか、または小さすぎます。)になってしまい、あきらめていましたが、解決策が見つかったので、記述します。
開発環境は、Visual Studio 2017 VB.netです。
以下の関連記事を前提としています。
記事「VB.netでAmazon SQSからメッセージを取得するサンプルプログラム作りました。」の「VB.netでAmazon SQSからメッセージを取得するコード」の中の
'ここで、何らかの処理を行って、完了したら、メッセージを削除します。
の下の部分(下の画像の赤で囲ったところの下)にデシリアライズするためのコードを書きます。
デシリアライズするためのコードは以下です。
Dim iHandle As Integer Dim sPath As String '受信したメッセージを、ファイルに保存します。 sPath = "[ファイルのパス]" iHandle = FreeFile() FileOpen(iHandle, sPath, OpenMode.Output) Print(iHandle, Message.Body) FileClose(iHandle) 'StreamReaderでメッセージを読み込みます。 Dim srQue As New System.IO.StreamReader(sPath) Dim serializer As New Serialization.XmlSerializer(GetType(AWS_SQS_Test.Notification)) Dim objQue As AWS_SQS_Test.Notification = DirectCast(serializer.Deserialize(srQue), AWS_SQS_Test.Notification) srQue.Close()
StreamReaderに直接文字列を流し込む方法がわからなかったので、一旦ファイルに保存してから、読み込んでデシリアライズしています。
デバッグで、srQue.Close()のところで止めて、ウォッチに「objQue」を追加してみました。
中身を確認すると、ちゃんとXMLの内容が反映されています。
MWSサブスクリプションAPIのAnyOfferChanged通知をAmazon SQSから取得しデシリアライズすることに成功したので、自作価格改定ツールに反映させようと思います。