java - socket.io-java-client cookies/自定义 header

标签 java android cookies socket.io

我正在为一个网站开发移动应用程序,他们使用 Socket.io 和 Websocket 进行通信。

我在 Android 上使用 socket.io-java-client 连接到 Socket.io 服务器,问题是,我不知道如何使用它设置自定义 header /cookie。

代码如下:

    public void runIO(){
        try {
            SocketIO socket = new SocketIO("http://192.168.1.60:1337");
            socket.connect(new IOCallback() {
                @Override
                public void onMessage(JSONObject json, IOAcknowledge ack) {
                    try {
                        System.out.println("Server said:" + json.toString(2));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void onMessage(String data, IOAcknowledge ack) {
                    System.out.println("Server said: " + data);
                }

                @Override
                public void onError(SocketIOException socketIOException) {
                    System.out.println("an Error occured");
                    socketIOException.printStackTrace();
                }

                @Override
                public void onDisconnect() {
                    System.out.println("Connection terminated.");
                }

                @Override
                public void onConnect() {
                    System.out.println("Connection established");
                }

                @Override
                public void on(String event, IOAcknowledge ack, Object... args) {
                    System.out.println("Server triggered event '" + event + "'");
                }
            });

            // This line is cached until the connection is establisched.
            socket.send("Hello Server!");
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

最佳答案

事实上有一些简单的函数可以用来在连接前设置头部:

addHeader(String key, String value)setHeaders(Properties headers)

您还可以使用 SocketIO(final String url, Properties headers)(而不是我使用的 SocketIO(final String url)):

// Haeader Properties initiation
    private Properties headers = new Properties();

然后例如设置cookies:

headers.setProperty("Cookie","key=data;key2=data2");

最后在连接时替换

this.socket = new SocketIO(val);

通过

this.socket = new SocketIO(val,this.headers);

关于java - socket.io-java-client cookies/自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234260/

相关文章:

java - 为什么使用 SwingUtilities.InvokeLater?

java - 使用 URL 下载图像

mysql - res.cookie() 在与 mysql 连接后没有

android - 为什么自定义复合 View 中的 EditText 会重复使用在另一个复合 View 实例中输入的文本?

android - 处理任务时出现异常 java.io.ioexception : can't write or read

android - Google Play 服务可以在应用内使用 cookie 吗?

javascript - 如何使用 JavaScript/jQuery 将新值添加/推送到存储在 cookie 中的数组

java - 在 Java 中,如何将十六进制字符串转换为字节 []?

javaw.exe 占用了我的内存?

java - 如何使 setContentView() 在线程中正常工作?