socket.io Android库authentication
我使用这个库( https://github.com/socketio/socket.io-client-java )来连接我的Android应用程序和我的Sails socket.io。
这是我使用的代码:
final Socket socket = IO.socket(Constants.LOCAL_URL+"?__sails_io_sdk_version=0.11.0"); socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { @Override public void call(Object... args) { JSONObject obj1 = new JSONObject(); try { obj1.put("url","/rest/room"); } catch (JSONException e) { e.printStackTrace(); } socket.emit("get", obj1, new Ack() { @Override public void call(Object... args) { Log.e("test", "GET"); } }); Log.e("test", "CONNECT"); } }).on("room", new Emitter.Listener() { @Override public void call(Object... args) { Log.e("test", "ROOM"); } });
但是我有一个403原因URL需要authentication。 那么如何修改套接字头来放置Cookie
并保持套接字和Web服务之间的会话呢?
这是图书馆开发的答案: https : //github.com/socketio/socket.io-client-java/issues/226
socket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener() { @Override public void call(Object... args) { Transport transport = (Transport)args[0]; transport.on(Transport.EVENT_REQUEST_HEADERS, new Emitter.Listener() { @Override public void call(Object... args) { @SuppressWarnings("unchecked") Map<String, List<String>> headers = (Map<String, List<String>>)args[0]; // modify request headers headers.put("Cookie", Arrays.asList("foo=1;")); } }); transport.on(Transport.EVENT_RESPONSE_HEADERS, new Emitter.Listener() { @Override public void call(Object... args) { @SuppressWarnings("unchecked") Map<String, List<String>> headers = (Map<String, List<String>>)args[0]; // access response headers String cookie = headers.get("Set-Cookie").get(0); } }); } });
- Android和iPhone设备之间发送推送通知的服务器实现
- 在Android中改造2将导致Java.io.EOFException在通过Node.js查询来自MongoDB数据库的项目时
- Google云消息传递(fake_message_id)
- 如何将一个反应原生的js文件转换为纯javascript文件?
- 是可以开发在Android和iOS平台上运行的通用业务逻辑?
- MongoDB / Strongloop / Loopback – 带无线networking的设备之间的脱机同步无线连接
- 简单的Sails.js和Android示例
- Android上的node.js npm
- parsing开源服务器的云代码与以前不一样