错误:使用正确的连接字符串打开Service Client

问题描述

我正在尝试使用正确的连接字符串运行Service Client Sample示例https://github.com/Azure/azure-iot-sdk-java/blob/master/service/iot-service-samples/service-client-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ServiceClientSample.java,但是它返回错误:

********* Starting ServiceClient sample...
Creating ServiceClient...
Exception in thread "main" java.lang.IllegalArgumentException: The connection string has an invalid value for property.
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.validateFormat(IotHubConnectionStringBuilder.java:196)
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.validate(IotHubConnectionStringBuilder.java:176)
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.parse(IotHubConnectionStringBuilder.java:132)
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.createConnectionString(IotHubConnectionStringBuilder.java:42)
        at com.microsoft.azure.sdk.iot.service.ServiceClient.createFromConnectionString(ServiceClient.java:69)
        at com.microsoft.azure.sdk.iot.service.ServiceClient.createFromConnectionString(ServiceClient.java:44)
        at testiothub.Main.openServiceClient(Main.java:104)
        at testiothub.Main.main(Main.java:52)

我正在使用:

    private static final String connectionString = "Endpoint=sb://[example_endpoint].servicebus.windows.net/;SharedAccessKeyName=[mySharedAccessName];SharedAccessKey=[SharedAccessKey]";
    private static final String deviceId = "my_device_example";

其中example_endpoint是我的端点,mySharedAccessName是我的共享访问名的名称,而SharedAccessKey是我的密钥。

我认为这是基于第196行的Java正则表达式的错误:https://github.com/Azure/azure-iot-sdk-java/blob/94930586487573a9f9d43cf10fe6b17ae71c01c3/service/iot-service-client/src/main/java/com/microsoft/azure/sdk/iot/service/IotHubConnectionStringBuilder.java#L196

我的Java版本和Azure SDK是:

openjdk version "1.8.0_265"
OpenJDK Runtime Environment Corretto-8.265.01.1 (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM Corretto-8.265.01.1 (build 25.265-b01,mixed mode)
        <dependency>
            <groupId>com.microsoft.azure.sdk.iot</groupId>
            <artifactId>iot-service-client</artifactId>
            <version>1.24.0</version>
        </dependency>

我该如何解决这个问题?

解决方法

显示的错误是正确的。您正在使用的连接字符串是以Event Hub-compatible endpoint开头的sb://,即它使用服务总线。 如果要使用serviceClient,则需要使用iotHub的连接字符串,可以在IoT hub blade -> Shared access policies -> <select policy name> -> Connection string—primary key

中找到

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...