package com.koushikdutta.async.http; import org.json.JSONObject; import com.koushikdutta.async.ByteBufferList; import com.koushikdutta.async.DataEmitter; import com.koushikdutta.async.Util; import com.koushikdutta.async.callback.CompletedCallback; public class JSONRequestBody implements AsyncHttpRequestBody { public JSONRequestBody() { } byte[] mBodyBytes; JSONObject json; public JSONRequestBody(JSONObject json) { this(); this.json = json; } private ByteBufferList data = null; @Override public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) { if (data == null) data = new ByteBufferList(); data.add(bb); bb.clear(); } @Override public void write(AsyncHttpRequest request, AsyncHttpResponse sink) { Util.writeAll(sink, mBodyBytes, new CompletedCallback() { @Override public void onCompleted(Exception ex) { } }); } @Override public String getContentType() { return "application/json"; } @Override public boolean readFullyOnRequest() { return true; } @Override public int length() { mBodyBytes = json.toString().getBytes(); return mBodyBytes.length; } }