2016-04-04 4 views
0

Ich bin neu bei azure iot. und ich versuche, shared access policies in azure iot hub mit seiner rest api zu erstellen.Gemeinsame Zugriffsrichtlinienerstellung in Azure IoT Hub unter Verwendung der Rest-API

https://management.azure.com/subscriptions/{subscription-Id}/resourceGroups/{group-name}/providers/Microsoft.Devices/IotHubs/{hub-name}?api-version=2016-02-03"); 

und mein Java-Code ist

 String policyold = "{\"tags\" : {}, \"location\": \"East Asia\",\"properties\" : \"authorizationPolicies\" : [{\"name\" : \"policy-namw\", \"primaryKey\" : \"{mykey}\" ,\"secondaryKey\" : \"secondary-key\" ,\"permissions\" :[\"ServiceConnect\" ,\"RegistryRead\" ,\"RegistryWrite\" ,\"DeviceConnect\"]}],\"eventHubEndpoints\" : { \"events\" : {\"messageRetentionInDays\":\"2\"}}}"; 


    StringEntity input1 = new StringEntity(policyold); 
    input1.setContentType("application/json"); 
    input1.setContentEncoding("UTF8"); 
    put.setEntity(input1); 

    put.setHeader("Authorization", token); 
    HttpResponse r2 = httpclient2.execute(put); 
    System.out.println(r2.getStatusLine()); 
    String content2 = EntityUtils.toString(r2.getEntity()); 
    org.json.JSONObject recvObj2 = new org.json.JSONObject(content2); 

, aber ich bin mit dem followiing Fehler auftritt.

HTTP/1.1 400 Bad Request {"error":{"code":"InvalidRequestContent","message":"The request content was invalid and could not be deserialized: 'Error converting value \"authorizationPolicies\" to type 'System.Collections.Generic.Dictionary`2[System.String,Newtonsoft.Json.Linq.JToken]'. Path 'properties', line 1, position 76.'."}} 

Außerdem verwende ich dieses Tutorial. https://msdn.microsoft.com/en-us/library/mt589015.aspx

Kann mir jemand helfen, dies zu lösen?

+0

Ich schlage vor, Sie können in das Azure IoT-Hub-Java-SDK für vereinfachte API-Aufrufe schauen. Der Link ist unter https://github.com/Azure/azure-iot-sdks/tree/master/java – juvchan

+0

Ja, ich habe versucht, dies zum Erstellen von Richtlinien für den gemeinsamen Zugriff zu verwenden. Zu diesem Zweck konnte jedoch kein Codebeispiel und keine Dokumentation gefunden werden. Das ist der Grund, warum ich mit http Rest api enden. Kannst du einen verweisen? danke – Sadaf

Antwort

1

Laut dem offiziellen Dokument Common error codes für Azure IoTHub bedeutet der Fehlercode 400 "Der Textkörper der Anfrage ist nicht gültig; er kann beispielsweise nicht analysiert werden, oder das Objekt kann nicht validiert werden."

Ich habe die policyold String-Wert in Ihrem Code, dann fand ich die JSON-String Sku name & Units die erforderlichen Elemente verpasst. Bitte lesen Sie sorgfältig die Tabelle der Elemente unter dem Ende des JSON-Anfrage-Inhalts.

Ein Azure IoTHub kann mehrere Richtlinien für den gemeinsamen Zugriff besitzen.

So gemeinsamen Zugriff Politik, wenn die Schaffung während neue IoTHub Erstellen Sie bitte die REST-API Create a new IoT Hub, sonst verwenden verwenden, um den REST-API Update metadata on an existing IoT Hub einen neuen für eine bestehende IoTHub hinzuzufügen.

+0

Okay @PeterPan. jetzt habe ich meine policyoldstring zu diesem geändert. String policyold = "{\" tags \ ": {}, \" location \ ": \" Ostasien \ ", \" properties \ ": \" authorizationPolicies \ ": [{\" name \ ": "policy-namw", "primaryKey": \ "{mykey} \", \ "secondaryKey \": \ "secondary-key \", \ "Berechtigungen \": [\ "ServiceConnect \", \ "RegistryRead \", \ "RegistryWrite \", \ "DeviceConnect \"]}], \ "eventHubEndpoints \": {\ "events \": {\ "messageRetentionInDays \": \ "2 \"}} sku \ ": {\" Name \ ": \" S1 \ ", \" Kapazität \ ": 1}}"; aber immer noch das gleiche Problem. – Sadaf

+0

Ich verwende Update-Metadaten auf und vorhandene IoT-Hub Rest API. – Sadaf

+0

@Sadaf Ich schlage vor, dass Sie versuchen können, das Azure IoTHub SDK für Java zu verwenden, wie juvchan im Kommentar sagt, und verwenden Sie den Fiddler, um die HTTP-Anforderung abzufangen, um den REST API-Aufruf zu kennen, da das Java SDK den zugehörigen REST umbrachte APIs. Es gibt [ein IoTHub-Tutorial zum Einstieg in Java] (https://azure.microsoft.com/en-us/documentation/articles/iot-hub-java-java-getstarted/), auf das Sie sich beziehen können. –

Verwandte Themen