2016-02-12 2 views
0

Я хотел бы попросить вас одолжение. У меня есть проблема с подтверждением ранее прочитанного сообщения D2C с использованием концентратора IoT. Я использую REST API, чтобы забрать сообщение, как (я имею заменить SIG)Сообщение D2C с использованием концентратора IoT

Запрос:

GET https://iot-hub-pospa.azure-devices.net/devices/18596c88-01e6-3f16-427b-10028d7305c5/messages/devicebound?api-version=2015-08-15-preview HTTP/1.1 
IoTHub-MessageLockTimeout: 3600 
Accept: application/json 
Authorization: SharedAccessSignature sr=iot-hub-pospa.azure-devices.net&sig={sig}&se=1485558838&skn=iothubowner 
Host: iot-hub-pospa.azure-devices.net 
If-None-Match: "1c5006a4-2288-4a2f-b7ea-dcdf9b5bbc99" 
Connection: Close 
X-P2P-PeerDist: Version=1.1 
X-P2P-PeerDistEx: MinContentInformation=1.0, MaxContentInformation=2.0 
Accept-Encoding: peerdist 

Ответ:

HTTP/1.1 200 OK 
Content-Length: 35 
ETag: "dfc78580-d251-4156-a5f6-c2a30811a504" 
Server: Microsoft-HTTPAPI/2.0 
iothub-messageid: 02cdb012-9749-48a9-bfb3-5812a4740675 
iothub-to: /devices/18596c88-01e6-3f16-427b-10028d7305c5/messages/deviceBound 
iothub-expiry: 
iothub-correlationid: 
iothub-ack: full 
iothub-sequencenumber: 56 
iothub-enqueuedtime: 2/2/2016 9:57:34 AM 
iothub-deliverycount: 0 
Date: Tue, 02 Feb 2016 10:21:43 GMT 
Connection: close 

2/2/2016 10:57:34 AM - Test message 

Тогда при подтверждении я получаю HTTP 412, как

Запрос:

DELETE https://iot-hub-pospa.azure-devices.net/devices/18596c88-01e6-3f16-427b-10028d7305c5/messages/devicebound/02cdb012-9749-48a9-bfb3-5812a4740675?api-version=2015-08-15-preview HTTP/1.1 
Accept: application/json 
If-Match: "02cdb012-9749-48a9-bfb3-5812a4740675" 
Authorization: SharedAccessSignature sr=iot-hub-pospa.azure-devices.net&sig={sig}&se=1485558838&skn=iothubowner 
Host: iot-hub-pospa.azure-devices.net 
Content-Length: 0 
Connection: Close 

Ответ:

HTTP/1.1 412 Precondition Failed 
Content-Length: 330 
Content-Type: application/json; charset=utf-8 
Server: Microsoft-HTTPAPI/2.0 
iothub-errorcode: DeviceMessageLockLost 
Date: Tue, 02 Feb 2016 10:21:49 GMT 
Connection: close 
  
{"Message":"ErrorCode:DeviceMessageLockLost;Message 02cdb012-9749-48a9-bfb3-5812a4740675 lock was lost for Device 18596c88-01e6-3f16-427b-10028d7305c5\r\nTracking Id:05994074a3664933a0910b5fc70e04e5-G:GatewayWorkerRole.6-B:1-P:cffe397b-f627-4435-bd54-48f5ba79c3ca-TimeStamp:02/02/2016 10:21:49\r\nErrorCode:DeviceMessageLockLost"} 
  
  

Кто-нибудь знает, что я должен сделать, чтобы успешно подтвердить/удалить сообщение из IoT Hub, пожалуйста? Thanks

+0

Не можете изменить ваш вопрос, чтобы код был читабельным? – CSharpRocks

ответ

0
 static DeviceClient _deviceClient; 
    _deviceClient = DeviceClient.CreateFromConnectionString(<IoTHubURI>, TransportType.Http1); 

public void SendMessage(IDictionary<string, object> dictionary) 
    { 
     Microsoft.Azure.Devices.Client.Message message = new Microsoft.Azure.Devices.Client.Message(); 
     try 
     { 
      foreach (var r in dictionary) 
      { 
       message.Properties[r.Key] = r.Value.ToString(); 
      } 
      _deviceClient.SendEventAsync(message); 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine(ex.Message); 
     } 
    } 
Смежные вопросы