android 异步socket 客户端,AndroidAsync :一个基于nio的异步socket ,http(客户端服务器端),websocket,socket.io库...

AndroidAsync  是一个基于nio的异步socket ,http(客户端服务器端),websocket,socket.io库,AndroidAsync 是一个底层的网络协议库,如果你想要一个容易使用,高级的,http请求库,请使用Ion(它是基于AndroidAsync 的),正常来说开发者更倾向于使用  Ion。

如果你需要一个未被封装的Android的raw Socket, HTTP client/server, WebSocket, and Socket.IO, AndroidAsync 正适合你。

特性

基于NIO,一个线程,回调驱动,高效

所有的操作返回一个Future,而且可以取消

All operations return a Future that can be cancelled

Socket client + socket server

HTTP client + server

WebSocket client + server

Socket.IO 客户端

下载

1

2

3

4

5

com.koushikdutta.async

androidasync

(insert latest version)

使用

下载一个字符串

1

2

3

4

5

6

7

8

9

10

11

12// url is the URL to download.

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

// Callback is invoked with any exceptions/errors, and the result, if available.

@Override

public void onCompleted(Exception e, AsyncHttpResponse response,String result) {

if (e !=null) {

e.printStackTrace();

return;

}

System.out.println("I got a string: " + result);

}

});

下载一个JSON

1

2

3

4

5

6

7

8

9

10

11

12// url is the URL to download.

AsyncHttpClient.getDefaultInstance().getJSONObject(url,new AsyncHttpClient.JSONObjectCallback() {

// Callback is invoked with any exceptions/errors, and the result, if available.

@Override

public void onCompleted(Exception e, AsyncHttpResponse response, JSONObject result) {

if (e !=null) {

e.printStackTrace();

return;

}

System.out.println("I got a JSONObject: " + result);

}

});

下载到一个文件

1

2

3

4

5

6

7

8

9

10AsyncHttpClient.getDefaultInstance().getFile(url, filename,new AsyncHttpClient.FileCallback() {

@Override

public void onCompleted(Exception e, AsyncHttpResponse response, File result) {

if (e !=null) {

e.printStackTrace();

return;

}

System.out.println("my file is available at: " + result.getAbsolutePath());

}

});

支持缓存

1

2

3

4// arguments are the http client, the directory to store cache files, and the size of the cache in bytes

ResponseCacheMiddleware.addCache(AsyncHttpClient.getDefaultInstance(),

getFileStreamPath("asynccache"),

1024 *1024 *10);

创建一个socket

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23AsyncHttpClient.getDefaultInstance().websocket(get,"my-protocol",new WebSocketConnectCallback() {

@Override

public void onCompleted(Exception ex, WebSocket webSocket) {

if (ex !=null) {

ex.printStackTrace();

return;

}

webSocket.send("a string");

webSocket.send(new byte[10]);

webSocket.setStringCallback(new StringCallback() {

public void onStringAvailable(String s) {

System.out.println("I got a string: " + s);

}

});

webSocket.setDataCallback(new DataCallback() {

public void onDataAvailable(ByteBufferList byteBufferList) {

System.out.println("I got some bytes!");

// note that this data has been read

byteBufferList.recycle();

}

});

}

});

支持socket io

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27SocketIOClient.connect(AsyncHttpClient.getDefaultInstance(),"http://192.168.1.2:3000",new ConnectCallback() {

@Override

public void onConnectCompleted(Exception ex, SocketIOClient client) {

if (ex !=null) {

ex.printStackTrace();

return;

}

client.setStringCallback(new StringCallback() {

@Override

public void onString(String string) {

System.out.println(string);

}

});

client.on("someEvent",new EventCallback() {

@Override

public void onEvent(JSONArray argument, Acknowledge acknowledge) {

System.out.println("args: " + arguments.toString());

}

});

client.setJSONCallback(new JSONCallback() {

@Override

public void onJSON(JSONObject json) {

System.out.println("json: " + json.toString());

}

});

}

});

提交表单

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15AsyncHttpPost post =new AsyncHttpPost("http://myservercom/postform.html");

MultipartFormDataBody body =new MultipartFormDataBody();

body.addFilePart("my-file",new File("/path/to/file.txt");

body.addStringPart("foo","bar");

post.setBody(body);

AsyncHttpClient.getDefaultInstance().execute(post,new StringCallback() {

@Override

public void onCompleted(Exception e, AsyncHttpResponse source,String result) {

if (e !=null) {

ex.printStackTrace();

return;

}

System.out.println("Server says: " + result);

}

});

创建一个http  server

1

2

3

4

5

6

7

8

9

10

11

12

13

14AsyncHttpServer server =new AsyncHttpServer();

List _sockets =new ArrayList();

server.get("/",new HttpServerRequestCallback() {

@Override

public void onRequest(AsyncHttpServerRequest request, AsyncHttpServerResponse response) {

response.send("Hello!!!");

}

});

// listen on port 5000

server.listen(5000);

// browsing http://localhost:5000 will return Hello!!!

websocket  server

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32server.websocket("/live",new WebSocketRequestCallback() {

@Override

public void onConnected(final WebSocket webSocket, AsyncHttpServerRequest request) {

_sockets.add(webSocket);

//Use this to clean up any references to your websocket

websocket.setClosedCallback(new CompletedCallback() {

@Override

public void onCompleted(Exception ex) {

try {

if (ex !=null)

Log.e("WebSocket","Error");

}finally {

_sockets.remove(webSocket);

}

}

});

webSocket.setStringCallback(new StringCallback() {

@Override

public void onStringAvailable(String s) {

if ("Hello Server".equals(s))

webSocket.send("Welcome Client!");

}

});

}

});

//..Sometime later, broadcast!

for (WebSocket socket : _sockets)

socket.send("Fireball!");

支持Future

1

2

3Future string = client.getString("http://foo.com/hello.txt");

// this will block, and may also throw if there was an error!

String value = string.get();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值