com.koushikdutta.async.http.StringBody Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of androidasync Show documentation
Show all versions of androidasync Show documentation
Asynchronous socket, http(s) (client+server) and websocket library for android. Based on nio, not threads.
package com.koushikdutta.async.http;
import com.koushikdutta.async.ByteBufferList;
import com.koushikdutta.async.DataEmitter;
import com.koushikdutta.async.Util;
import com.koushikdutta.async.callback.CompletedCallback;
import com.koushikdutta.async.callback.DataCallback;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.async.parser.JSONObjectParser;
import com.koushikdutta.async.parser.StringParser;
import org.json.JSONObject;
public class StringBody implements AsyncHttpRequestBody {
public StringBody() {
}
byte[] mBodyBytes;
String string;
public StringBody(String string) {
this();
this.string = string;
}
@Override
public void parse(DataEmitter emitter, final CompletedCallback completed) {
new StringParser().parse(emitter).setCallback(new FutureCallback() {
@Override
public void onCompleted(Exception e, String result) {
string = result;
completed.onCompleted(e);
}
});
}
public static final String CONTENT_TYPE = "text/plain";
@Override
public void write(AsyncHttpRequest request, AsyncHttpResponse sink) {
if (mBodyBytes == null)
mBodyBytes = string.getBytes();
Util.writeAll(sink, mBodyBytes, null);
}
@Override
public String getContentType() {
return "text/plain";
}
@Override
public boolean readFullyOnRequest() {
return true;
}
@Override
public int length() {
if (mBodyBytes == null)
mBodyBytes = string.getBytes();
return mBodyBytes.length;
}
@Override
public String toString() {
return string;
}
@Override
public String get() {
return toString();
}
}