Клиент Android / Socket.io - Как отправить куки при рукопожатии с сервером?

Я пытаюсь (безуспешно) соединиться с сервером socket.io, но продолжаю получать те же ошибки:io.socket.SocketIOException: Error while handshaking вызванный java.net.ConnectException: failed to connect to my.domain.name.com (port 8080) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused),

Я только что обнаружил, что при рукопожатии должен отправлять cookie со следующими значениями: домен, путь, имя и значение. Попробовав несколько возможных способов сделать это (основываясь на этом и на этом), я получил этот кусок кода, но он все еще не работал:

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(...) продолжает возвращать ноль, а соединение все еще не установлено.

Может ли кто-нибудь помочь мне добавить печенье в шапку, пожалуйста?

И для записи, я не знаю, что это может изменить, но я использую эту библиотеку: https://github.com/Gottox/socket.io-java-client

Заранее спасибо за помощь!

Матье

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)...

Другие вопросы по тегам