【问题标题】:Android / Socket.io client - How to send a cookie while handshaking with the server?Android / Socket.io 客户端 - 如何在与服务器握手时发送 cookie?
【发布时间】:2014-10-21 14:33:04
【问题描述】:

我正在尝试(未成功)连接到 socket.io 服务器,但我不断收到相同的错误: io.socket.SocketIOException: Error while handshakingjava.net.ConnectException: failed to connect to my.domain.name.com (port 8080) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused) 引起。

我刚刚发现我应该在握手时发送一个包含以下值的 cookie:域、路径、名称和值。在尝试了几种可能的方法之后(基于thisthis),我最终得到了那段代码,但它仍然无法正常工作:

String cookieString = "domain=" + "my.domain.name.com" + ";path=" + "/" + ";name=" + "auth" + ";value=" + "XXXXXtokenXXXXX";
CookieManager.getInstance().setCookie("http://my.domain.name.com:8080/", cookieString);

String header = CookieManager.getInstance().getCookie("my.domain.name.com:8080/");
final SocketIO socket = new SocketIO("my.domain.name.com:8080/");
socket.addHeader("Cookie", header);

socket.connect(new IOCallback()
{
    ...
}

CookieManager.getInstance().getCookie(...) 不断返回 null 并且连接仍然失败。

谁能帮我在标题中添加一个 cookie 吗?

为了记录,我不知道它会改变什么,但我正在使用这个库:https://github.com/Gottox/socket.io-java-client

提前感谢您的帮助!

马修

【问题讨论】:

  • 有什么想法吗?请问?

标签: android cookies header socket.io handshaking


【解决方案1】:

好的,以防万一有人需要解决方案,我终于解决了这个问题。 其实很简单:

        String cookie = "domain=\"http://my.domain.name.com:80\";path=\"/\";name=\"auth\";value=\"XXXXtokenXXXX\"";
        socket = new SocketIO("http://my.domain.name.com:80/");
        socket.addHeader("Cookie", cookie);

        socket.connect(new IOCallback()
        {
            ...
        }

因此,您只需创建一个“key1=value1;key2=value2...”形式的字符串,并使用addHeader("Cookie", youCookieString); 方法将其作为标头添加到套接字。

为了记录,我一直收到错误 ECONNREFUSED 因为我试图连接到错误的端口(8080 而不是 80)...

【讨论】:

    猜你喜欢
    • 2019-04-23
    • 2017-10-04
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2019-03-26
    • 2012-11-11
    相关资源
    最近更新 更多