具有querystring参数的AndroidSync socket.io连接

具有querystring参数的AndroidSync socket.io连接,android,sockets,socket.io,androidasync-koush,Android,Sockets,Socket.io,Androidasync Koush,我在Android上使用socket.io已经有几天了。到目前为止,我正在使用Koush的AndroidSync。当我尝试连接到本地socket.io服务器时(http://192.168.2.1:3000)一切正常,我可以发出命令和接收事件消息。但是,当我尝试将其用于带有查询字符串参数的实时服务器时(http://api.mysite.com:8000/socket.io/1?v=1&name=xxx&password=xxx)我无法连接。 是否有合适的方法将查询字符串参数传递给Android

我在Android上使用socket.io已经有几天了。到目前为止,我正在使用Koush的AndroidSync。当我尝试连接到本地socket.io服务器时(
http://192.168.2.1:3000
)一切正常,我可以发出命令和接收事件消息。但是,当我尝试将其用于带有查询字符串参数的实时服务器时(
http://api.mysite.com:8000/socket.io/1?v=1&name=xxx&password=xxx
)我无法连接。 是否有合适的方法将查询字符串参数传递给AndroidSync socket.io?这是我的密码

    Uri.Builder b = Uri.parse("http://api.mysite.com:8000/socket.io/1").buildUpon();
    b.appendQueryParameter("v", "1");
    b.appendQueryParameter("name", "xxx");
    b.appendQueryParameter("pass", "xxx");

    myUrl = b.build().toString();

    AsyncHttpClient.getDefaultInstance().getString(myUrl, new AsyncHttpClient.StringCallback() {

            @Override
            public void onCompleted(Exception arg0, AsyncHttpResponse arg1, String arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onConnect(AsyncHttpResponse response) {
                // TODO Auto-generated method stub
                super.onConnect(response);
                Log.d("tag","onConnect!");
            }

            @Override
            public void onProgress(AsyncHttpResponse response, int downloaded,
                    int total) {
                // TODO Auto-generated method stub
                super.onProgress(response, downloaded, total);
                Log.d("tag","Progress!");
            }


        });

        SocketIOClient.connect(AsyncHttpClient.getDefaultInstance(), myUrl, new ConnectCallback() {

            @Override
            public void onConnectCompleted(Exception arg0, SocketIOClient client) {
                // TODO Auto-generated method stub
                if (client.isConnected()) {
                    Log.d("tag","!");
                } else {
                    Log.d("tag","?");
                }


            }
        });

我在他的其他图书馆android websockets中发现了同样的问题。我帮他在两个项目中解决了这个问题。查看对和所做的更改。android websockets的链接详细描述了这个问题。我建议您从主分支中提取最新的更改,然后重试

“我无法连接。”意味着你甚至无法建立套接字,你可以建立,但你无法读取,它会超时…?我认为根本没有连接。因为在SocketIOClient.connect上,我正在检查client.isConnected,但总是返回false。从
127.0.0.1
更改为
api.mysite.com
似乎您不再使用LAN,而是使用internet连接到该服务器,我错了吗?或者您是否有本地DNS服务将该主机解析为本地IP地址?它实际上是通过internet提供的。您是否检查了8000端口是否在您的路由器上打开并重定向到正确的本地设备?您在其中提到了使用Uri.builder,我在我的问题中做得对吗?或者是否有其他方法在AndroidSync中设置查询参数或添加标题(而不是使用查询参数)?@jeraldov您的方法调用是正确的,它只是在AndroidSync库中,url由于未使用Uri.Builder.Wow而出错。您的回答确实将我连接到了服务器。非常感谢!但我希望你的帮助不会到此为止。我们是否有机会进一步讨论Socket.IO和Android?我想再问几个关于AndroidSync的问题。当然。在这个房间里和我聊天嗨@Rahul,你知道Android websockets是否会在断开连接/超时时自动连接吗?