A retrofit client can POST empty body.
import com.squareup.okhttp.OkHttpClient;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import retrofit.client.Header;
import retrofit.client.OkClient;
import retrofit.client.Request;
import retrofit.client.Response;
import retrofit.mime.TypedByteArray;
import retrofit.mime.TypedOutput;
/**
* A retrofit client can POST empty body.
*/
public class NullBodySafeClient extends OkClient {
public NullBodySafeClient(OkHttpClient client) {
super(client);
}
static Request createNullBodySafeRequest(Request request) {
TypedOutput body = request.getBody();
List<Header> headers = new ArrayList<>(request.getHeaders());
if (body == null) {
body = new TypedByteArray("text/plain;charset=UTF-8", new byte[0]);
headers.add(new Header("Content-Length", "0"));
return new Request(request.getMethod(), request.getUrl(), headers, body);
}
return request;
}
@Override
public Response execute(Request request) throws IOException {
return super.execute(createNullBodySafeRequest(request));
}
}
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(API_ENDPOINT)
.setClient(new NullBodySafeClient(new OkHttpClient()))
.build();