koush / AndroidAsync

Asynchronous socket, http(s) (client+server) and websocket library for android. Based on nio, not threads.
Other
7.52k stars 1.56k forks source link

Unable to use ws uri correctly: java.lang.IllegalArgumentException: invalid uri #340

Open idchlife opened 9 years ago

idchlife commented 9 years ago

I'm trying to parse uri like this:

AsyncHttpClient.getDefaultInstance().websocket(new AsyncHttpRequest(
                new Uri.Builder()
                        .scheme("ws")
                        .path("//tst.adnroidapplication.eu:8888")
                        .build(),
                        "GET",
                        Headers.parse(cookieManager.getSidCookie())

        ), "my-protocol", new AsyncHttpClient.WebSocketConnectCallback() {

... etc

And this is what I always get in logcat.

04-03 12:54:30.168  11374-12440/eu.application.androidapplication W/System.err﹕ java.lang.IllegalArgumentException: invalid uri=ws://tst.application.eu%3A8888 middlewares=[com.koushikdutta.async.http.HttpTransportMiddleware@3c5b91c5, com.koushikdutta.async.http.spdy.SpdyMiddleware@1cc5471a, com.    koushikdutta.async.http.AsyncSocketMiddleware@33c5624b]
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.http.AsyncHttpClient.executeAffinity(    AsyncHttpClient.java:310)
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.http.AsyncHttpClient.access$100(AsyncHttpClient.    java:50)
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.http.AsyncHttpClient$1.run(AsyncHttpClient.    java:189)
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.AsyncServer.lockAndRunQueue(AsyncServer.java:708)
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.AsyncServer.runLoop(AsyncServer.java:725)
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.AsyncServer.run(AsyncServer.java:626)
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.AsyncServer.access$700(AsyncServer.java:41)
04-03 12:54:30.171  11374-12440/eu.application.androidapplication W/System.err﹕ at com.koushikdutta.async.AsyncServer$13.run(AsyncServer.java:568)    

Maybe somebody encountered similar error? How to parse uri like "ws://uri.com:8888"?

jojojames commented 9 years ago

+1, I just used "https://" instead.

rini-m commented 9 years ago

Hi, I have same issue. This is my request format AsyncHttpRequest req = new AsyncHttpRequest(Uri.parse("ws://myapp-publisher.test.com:9000/content?Id=10142&startTime=1435687200&endTime=1435687500), null);

Could you please help?

grofmarton commented 8 years ago

Websocket client

AsyncHttpGet get = new AsyncHttpGet("http://example.com:8800/");

AsyncHttpClient.getDefaultInstance().websocket(get, null, new AsyncHttpClient.WebSocketConnectCallback() {
    @Override
    public void onCompleted(Exception ex, WebSocket webSocket) {
        if (ex != null) {
            ex.printStackTrace();
            return;
        }

        webSocket.send("a string");

        webSocket.setStringCallback(new StringCallback() {
            public void onStringAvailable(String s) {
                System.out.println("I got a string: " + s);
            }
        });
    }
});

Use AsyncHttpGet() and use in uri http:// protocol, not ws://