Skip to content

Repository files navigation

JavaHttpClient

JavaHttpClient

Include the litesockets http client into your project from maven central:

<dependency>
<groupId>org.threadly</groupId>
<artifactId>litesockets-http-client</artifactId>
<version>0.27</version>
</dependency>

Include the litesockets http server into your project from maven central:

<dependency>
<groupId>org.threadly</groupId>
<artifactId>litesockets-http-server</artifactId>
<version>0.27</version>
</dependency>

HTTPClient Example

Here are some simple examples of using the HTTPClient call.

Simple Blocking Request

HTTPClienthttpClient = newHTTPClient();
httpClient.start();
HTTPResponseDataresponse = httpClient.request(newURL("http://www.google.com"));
System.out.println(response.getResponse());
System.out.println(response.getBodyAsString());

Simple Async Request

HTTPClienthttpClient = newHTTPClient();
httpClient.start();
HTTPRequestBuilderhrb = newHTTPRequestBuilder().setHost("www.google.com").setPort(80).setSSL(false);
ListenableFuture<HTTPResponseData> lfr1 = httpClient.requestAsync(hrb.buildClientHTTPRequest());
ListenableFuture<HTTPResponseData> lfr2 = httpClient.requestAsync(hrb.buildClientHTTPRequest());
ListenableFuture<HTTPResponseData> lfr3 = httpClient.requestAsync(hrb.buildClientHTTPRequest());
FutureCallback<HTTPResponseData> fc = newFutureCallback<HTTPResponseData>() {
@OverridepublicvoidhandleResult(HTTPResponseDataresult) {
System.out.println(result.getResponse());
System.out.println(result.getBodyAsString());
}
@OverridepublicvoidhandleFailure(Throwablet) {
System.out.println("ERROR:");
t.printStackTrace();
}};
lfr1.addCallback(fc);
lfr2.addCallback(fc);
lfr3.addCallback(fc);
//fyi, all this is async

HTTPStreamClient Examples

Here are some examples using the HTTPStreamClient

Simple Incoming Data Request

ThreadedSocketExecuterTSE = newThreadedSocketExecuter();
TSE.start();
HTTPRequestBuilderhrb = newHTTPRequestBuilder().setHost("www.google.com").setPort(80);
HTTPStreamClienthsc = newHTTPStreamClient(TSE, "www.google.com", 80);
hsc.setHTTPStreamReader(newHTTPStreamReader() {
MergedByteBuffersmbb = newMergedByteBuffers();
@Overridepublicvoidhandle(ByteBufferbb) {
mbb.add(bb);
System.out.println("Data output:\n"+mbb.getAsString(mbb.remaining()));
}});
System.out.println(hrb.build().toString());
ListenableFuture<HTTPResponse> lfr = hsc.writeRequest(hrb.build());
lfr.addCallback(newFutureCallback<HTTPResponse>() {
@OverridepublicvoidhandleResult(HTTPResponseresult) {
System.out.println(result.toString());
}
@OverridepublicvoidhandleFailure(Throwablet) {
System.out.println("ERROR:");
t.printStackTrace();
}});
hsc.connect();
//fyi, all this is async

Chunked Outgoing Data

ThreadedSocketExecuterTSE = newThreadedSocketExecuter();
TSE.start();
HTTPRequestBuilderhrb = newHTTPRequestBuilder().setHost("hosttopost.none").setPort(80)
.setHeader(HTTPConstants.HTTP_KEY_TRANSFER_ENCODING, "chunked")
.setRequestType(RequestType.POST);
finalHTTPStreamClienthsc = newHTTPStreamClient(TSE, "hosttopost.none", 80);
hsc.setHTTPStreamReader(newHTTPStreamReader() {
MergedByteBuffersmbb = newMergedByteBuffers();
@Overridepublicvoidhandle(ByteBufferbb) {
mbb.add(bb);
System.out.println("Data output:\n"+mbb.getAsString(mbb.remaining()));
}});
System.out.println(hrb.build().toString());
ListenableFuture<HTTPResponse> lfr = hsc.writeRequest(hrb.build());
lfr.addCallback(newFutureCallback<HTTPResponse>() {
@OverridepublicvoidhandleResult(HTTPResponseresult) {
System.out.println(result.getHeaders());
}
@OverridepublicvoidhandleFailure(Throwablet) {
System.out.println("ERROR:");
t.printStackTrace();
}});
hsc.write(ByteBuffer.wrap("EACH".getBytes()));
hsc.write(ByteBuffer.wrap("WRITE".getBytes()));
hsc.write(ByteBuffer.wrap("IS".getBytes()));
hsc.write(ByteBuffer.wrap("A".getBytes()));
hsc.write(ByteBuffer.wrap("CHUNK".getBytes()));
//Ends the chunks.hsc.write(ByteBuffer.allocate(0));
//make sure they responded.lfr.get();
lfr = hsc.writeRequest(hrb.build());
lfr.addCallback(newFutureCallback<HTTPResponse>() {
@OverridepublicvoidhandleResult(HTTPResponseresult) {
System.out.println(result.getHeaders());
}
@OverridepublicvoidhandleFailure(Throwablet) {
System.out.println("ERROR:");
t.printStackTrace();
}});
hsc.write(ByteBuffer.wrap("NOW WE POST AGAIN".getBytes()));
hsc.write(ByteBuffer.wrap(newbyte[0]));
lfr.get();

WebSocket Client Example

finalSettableListenableFuture<Boolean> slf = newSettableListenableFuture<Boolean>(); //Used to block till response since everything is async.ThreadedSocketExecuterTSE = newThreadedSocketExecuter();
TSE.start();
//Can use ws or wss for ssl, you can also call enableSSL with an SSLEngine to use, default is full trust engine, no cert validation!finalWebSocketClientwsc = newWebSocketClient(TSE, newURI("ws://echo.websocket.org")); wsc.setWebSocketDataReader(newWebSocketDataReader() {
@OverridepublicvoidonData(ByteBufferbb) {
MergedByteBuffersmbb = newMergedByteBuffers(); //Only used to make it a string.mbb.add(bb);
System.out.println(mbb.getAsString(mbb.remaining()));
slf.setResult(true);
}});
wsc.connect().addCallback(newFutureCallback<Boolean>() {
@OverridepublicvoidhandleResult(Booleanresult) {
//we have to be fully connected before we can writewsc.write(ByteBuffer.wrap("TESTDATA".getBytes()), WebSocketOpCodes.Text.getValue(), true); }
@OverridepublicvoidhandleFailure(Throwablet) {
slf.setFailure(t);
}});
slf.get(10, TimeUnit.SECONDS);

About

Http protocol handlers for litesockets network library

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages