当前位置: 首页 > 知识库问答 >
问题:

错误:使用正确的连接字符串打开服务客户端

公孙俭
2023-03-14

我尝试使用正确的连接字符串运行服务客户端示例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";

其中< code>example_endpoint是我的endpoint,< code>mySharedAccessName是我的共享访问名的名称,< code>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>

我该如何解决这个问题?

共有1个答案

庞阳波
2023-03-14

显示的错误是正确的。您正在使用的连接字符串属于以< code>sb://开头的< code > Event Hub-compatible endpoint ,即它使用服务总线。如果要使用serviceClient,需要使用iotHub的连接字符串,可以在< code>IoT hub blade -中找到

 类似资料:
  • 我收到连接重置错误,代码如下。到底是什么原因导致了连接重置?这是因为我试图忽略SSL证书验证的方式吗? 堆栈跟踪 java.net.SocketExcema:连接重置java.net.SocketInputStream.read(SocketInputStream.java:179)com.ibm.jsse2. a. a(a.java:148)com.ibm.jsse2. a. a(a.java:

  • 编辑2:我切换到,并用包装客户端工厂,这样设备就可以很好地到达后端。但是当后端发回一些东西时,我会得到错误的出站套接字,客户机套接字死亡。我认为这是因为后端没有正确路由消息所必需的头。如何捕获此信息?我的配置类如下:

  • 错误: 发生错误:09:54:58:错误:连接到服务器时出错:致命:用户“Postgres”的密码身份验证失败。

  • 一个非常基本的问题是,在Kotlin中连接字符串的正确方法是什么? 在Java中,可以使用concat()方法,例如。 但是Kotlin无法使用concat()函数。我应该使用符号吗?

  • 如何使用套接字将Swift客户端连接到Java服务器?如何在客户端和服务器之间发送不同的数据类型?

  • 我正在开发一个与许多客户端连接的服务器。我需要知道客户端何时与服务器断开连接。因此,每个客户端都向服务器发送一个特定的字符。如果两秒钟后没有收到字符,那么我应该断开服务器与客户端的连接(释放为此客户端分配的资源)。 这是我的服务器的主要代码: 第一个问题是,我用来识别在线客户端的方式(每秒发送特定消息)是否是一种好方法? 如果它是好的,我如何使用检测与女巫客户端相关,然后如何断开密钥与服务器的连接