0

私は紺碧のIoTが初めてです。そして、残りの API を使用して Azure IoT Hub で共有アクセス ポリシーを作成しようとしています。

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

そして私のJavaコードは

     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);

しかし、私は次のエラーに直面しています。

 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.'."}}

さらに、私はこのチュートリアルを使用しています。https://msdn.microsoft.com/en-us/library/mt589015.aspx

誰でもこれを解決するのを手伝ってもらえますか?

4

1 に答える 1

1

Azure IoTHubの公式ドキュメントによるとCommon error codes、エラー コード 400 は、「要求の本文が無効です。たとえば、解析できないか、オブジェクトを検証できません。」という意味です。

コード内の文字列値を確認したpolicyoldところ、json 文字列に必要な要素Sku name&が含まれていないことがわかりましたUnits。Json リクエスト コンテンツの最後にある要素の表をよく確認してください。

Azure IoTHub は、複数の共有アクセス ポリシーを所有できます。

そのため、新しい IoTHub の作成中に共有アクセス ポリシーを作成する場合は、REST API を使用してくださいCreate a new IoT Hub。それ以外の場合は、REST API を使用しUpdate metadata on an existing IoT Hubて既存の IoTHub に新しいポリシーを追加してください。

于 2016-04-05T06:56:00.477 に答える