2017-08-27 5 views
0

私はazure sdkとrestクライアントを使用してイベントをIoTハブに送信しています。メインイベントメッセージの余分なプロパティをIoTハブに追加している間にメッセージのペイロードが変更されました - (レストクライアントを使用)

私はIotHub

ケース1に送信する前にメインペイロードに追加のプロパティを追加していてのIoTハブルーティング機能を使用する必要があります。AzureのSDK

イベントモデル

RealTimeMachineData realTimeData = new RealTimeMachineData(); 
realTimeData.Date = DateTime.UtcNow;   
realTimeData.MachineCode = "M1"; 

を使用してデータを送信しますIoT Hubにデータを送信するためのSDKコード enter image description here

このメッセージは、サービスバスex私はサービスバスエクスプローラにメッセージをチェックするとき、それがどのように見える私はイベントを送信した後のREST APIを通じて

HttpClient client = new HttpClient(); 

string deviceId = "DemoDevice"; 
string baseUrl = "https://******.azure-devices.net/devices/" + deviceId + "/messages/events?api-version=2016-02-03"; 
client.BaseAddress = new Uri(baseUrl); 

var sas = @"SharedAccessSignature sr=********"; 
client.DefaultRequestHeaders.Add("Authorization", sas); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    var message1 = new Microsoft.Azure.Devices.Client.Message(Encoding.ASCII.GetBytes(realTimeData.ToString())); 
message1.Properties.Add("Source", "AiR"); 


HttpResponseMessage response = client.PostAsJsonAsync(baseUrl, message1).Result; 

を呼び出すことによって、同じことを行うこの方法:plorer私はこの

{ 
    "MachineCode": "M1", 
    "Date": "2017-08-27T10:05:22.7063498Z", 
} 

ケース2のように見えます残りのクライアントSを送信する際にペイロードが異なるなっているので、私は、ストリーム分析では、このアプローチを使用する必要がありますし、

enter image description here

多くの問題に直面している。

私は何か間違っているのですか、またはレストクライアント経由で送信しなければならないことがありますか?

答えて

0

次は修正です:

var message1 = new StringContent(JsonConvert.SerializeObject(new RealTimeMachineData() { Date = DateTime.UtcNow, MachineCode = "M1" })); 
client.DefaultRequestHeaders.Add("iothub-app-Source", "AiR"); 
+0

これが機能していません。 – JARVIS

+0

これは動作するはずです。私はIoT Hubでテストしました。ペイロードとヘッダーの実装が正しくありません。 IoTハブ・ルートはソース= "AiR"であり、 –

関連する問題