我在 JAVA 中通过 socket.io 发送 JSONArray 时遇到问题。
通过下面的函数,我尝试使用用户名和 token 授权用户。
public static void authorize()
{
HashMap<String, String> user = Database.getUser();
JSONArray req = new JSONArray();
try {
JSONObject reqObj = new JSONObject();
reqObj.put("username", user.get("username"));
req.put( reqObj );
reqObj = new JSONObject();
reqObj.put("usertoken", user.get("usertoken"));
req.put( reqObj );
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("WebsocketFunctions", "Authorize: " + req.toString());
Socket.emit("authorize", req);
}
这是 Log.d("WebsocketFunctions") 输出:
Authorize: [{"username":"admin"},{"usertoken":"45345980983450983"}]
但是在我的 Node 服务器上我只得到:
debug - websocket writing 1:: {username : 'admin'}
我需要的不仅是用户名,还需要用户 token 。不知何故,用户 token 没有发送到服务器。
这是我的 Node 授权功能:
authorize: function(socket, data)
{
console.log('Authorize');
console.log(data);
},
最佳答案
我不知道问题出在哪里,但我确信的一件事是,您可以在没有 JSONArray
的情况下完成此操作。我这样做并且有效:
JSONObject obj = new JSONObject();
obj.putOpt("username", user.get("username"));
obj.putOpt("usertoken", user.get("usertoken"));
socket.emit("authorize", obj);
如果您想发送int
或double
,请使用:
obj.put("key", value);
您可以通过以下方式在socket.io服务器中访问它:
socket.on("authorize", function(data) {
var user = data.username;
var token = data.usertoken;
})
关于Java Websocket 发出数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21514512/