会社行きたくなかったんです。

自由になりたくて会社辞めました

IT プログラミング

MWSサブスクリプションAPIのAnyOfferChanged通知をAmazon SQSから取得しデシリアライズすることに成功

投稿日:

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から取得しデシリアライズすることに成功したので、自作価格改定ツールに反映させようと思います。

-IT, プログラミング

Copyright© 自由になりたくて会社辞めました , 2024 AllRights Reserved Powered by AFFINGER4.