[英]How to convert a ip string xxx.xxx.xxx.xxx:xxxxx to xxx.xxx.xxx.xxx?
[英]Exception in thread “main” java.lang.IllegalArgumentException: no NetworkModule installed for scheme “http” of URI “http://xxx.xxx.xxx.xxx:xxxx”
我目前正在為我的項目使用 MQTT eclipse/paho.mqtt.java 庫。 這是 eclipse/paho.mqtt.java 庫的鏈接。
https://github.com/eclipse/paho.mqtt.java
我想用 http 協議連接 MQTT。 但原始庫適用於tcp
協議。 我試圖通過創建一個 mqtt 客戶端來與 mqtt 建立連接。 我將在下面顯示我的代碼,
抱歉在 IP 地址和 URL 中使用xxx
符號。
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MQTT {
public static void main(String[] args) {
String topic = "MQTT Examples";
String content = "Message from MqttPublishSample";
int qos = 2;
//String broker = "tcp://iot.eclipse.org:1883";
String broker = "http://xxx.xxx.xxx.xxx:xxxx";
String clientId = "JavaSample";
MemoryPersistence persistence = new MemoryPersistence();
try {
MqttClient sampleClient = new MqttClient(broker, clientId, null);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
String accessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
String pass = "";
char[] charArr = pass.toCharArray();
//I added in here my access token of the server
connOpts.setUserName(accessToken);
connOpts.setPassword(charArr);
System.out.println("Connecting to broker: "+broker);
sampleClient.connect(connOpts);
System.out.println("Connected");
System.out.println("Publishing message: "+content);
MqttMessage message = new MqttMessage(content.getBytes());
message.setQos(qos);
sampleClient.publish(topic, message);
System.out.println("Message published");
sampleClient.disconnect();
System.out.println("Disconnected");
System.exit(0);
} catch(MqttException me) {
System.out.println("reason "+me.getReasonCode());
System.out.println("msg "+me.getMessage());
System.out.println("loc "+me.getLocalizedMessage());
System.out.println("cause "+me.getCause());
System.out.println("excep "+me);
me.printStackTrace();
}
}
}
它顯示以下錯誤,
Exception in thread "main" java.lang.IllegalArgumentException: no NetworkModule installed for scheme "http" of URI "http://xxx.xxx.xxx.xxx:xxxx"
at org.eclipse.paho.client.mqttv3.internal.NetworkModuleService.validateURI(NetworkModuleService.java:70)
at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:454)
at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:320)
at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:315)
at org.eclipse.paho.client.mqttv3.MqttClient.<init>(MqttClient.java:227)
at MQTT.main(MQTT.java:17)
那么我應該怎么做,例如tcp
在String broker ="tcp://iot.eclipse.org:1883";
. 但我想為此設置http
,我嘗試將其添加為, String broker = "http://xxx.xxx.xxx.xxx:xxxx";
然后得到了上述錯誤,那么應該怎么做。
從問題中不清楚您要做什么,但這可能有助於為您澄清一些事情。
Paho 客戶端代理中的 URL 架構(協議)可以是以下之一:
tcp://
這是 TCP 上的本機 MQTTssl://
這是在 TCP 上使用 SSL/TLS 的本機 MQTTws://
這個 MQTT over Websocketswss://
這是 MQTT over Websockets with SSL/TLSlocal://
特殊情況在這里沒有用。 為了在 TCP ( tcp://
) 上使用除基本 MQTT 以外的任何東西,您需要將代理配置為在與默認 1883 不同的端口上支持此作為額外的偵聽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.