[英]How to connect to a broker API using sockets and Java?
我一直在嘗試連接到 XTB API,但似乎無法正常工作。 我對 sockets 的體驗為零,我正在學習 go。我正在嘗試發送 JSON object,我期待某種響應,要么是成功消息,要么是錯誤消息,但我什么也沒收到。 我什至不知道我做的對不對。
public static void main(String[] args) {
String host = "xapi.xtb.com";
int port = 5112;
Socket s;
try {
JSONObject main = new JSONObject();
JSONObject user = new JSONObject();
main.put("command", "login");
user.put("userId", "MY_ID");
user.put("password", "MY_PSSWD");
main.put("arguments", user);
s = new Socket(host, port);
SocketAddress a;
a = new InetSocketAddress("xapi.xtb.com", 5112);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
out.write(main.toString());
String response = in.readLine();
System.out.println(response);
in.close();
out.close();
} catch (IOException ex) {
ex.printStackTrace(System.out);
}
}
我只設法讓他們的 WebSocket 端點工作。 除了他們的整個 API 文檔僅包含 WebSocket 命令這一事實之外,我認為他們希望用戶以這種方式連接。
我幫不了你Java,但算法如下:
1.定義連接
獲取 WebSocket 客戶端庫 / package。 通常您要做的第一件事是使用 wss://... 地址作為參數來實例化 object。 在這個階段不要發出連接命令。
2.定義事件處理程序
大多數 WebSocket 客戶端調度您需要在代碼中處理的事件。
第一個事件通常是“打開的”,一旦建立連接就會被觸發。 來自服務器的每條消息都會觸發一個“消息”事件。 您需要為“onOpen”和“onMessage”事件(無論命名約定如何)編寫處理程序,這將執行您的代碼邏輯。
通常在您的 WebSocket package 中會有一個“發送”命令,您可以使用它來向服務器發送消息。 使用文檔中描述的命令作為發送命令的有效負載:
// pseudocode
ws.send({
"command":"login",
"arguments": {
"userId":"1000",
"password":"PASSWORD"
}
})
3.連接
一旦定義了事件處理程序,您就可以發出“連接”命令。
祝您交易順利。 希望能幫助到你。
也許我已經非常非常非常晚了但是...我一直在玩你的例子。
您將獲得 null,因為連接是普通的 http。
要修復它,您需要更改:
import java.net.Socket;
到
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
然后,在創建套接字時......
代替
Socket s
s = new Socket(host, port);
你必須把這個:
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket s = (SSLSocket) factory.createSocket(host, port);
另外,在 out.write.... 添加
out.flush();
你完成了
為什么? 在 xtb api 文檔中,他們這樣說:
所有服務器都使用 SSL 連接。
在弄亂了 wireshark 之后,我發現 JSON 是以純文本形式發送的……
您可能之前已經找到它,因為這個問題很老,但它保留在這里以防其他人遇到問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.