nifCody nifCody - 1 year ago 278
JSON Question

Sending JSON body through POST request in OKhttp in Android

I have setting up OkHttpClient and successfully sending the GET request to the server. And also I could able to sending the POST request to the server with empty body tag.

Now, I'm trying to send the following JSON Object to the server.

"title": "Mr.",
"last_name": "",
"email": "",
"contact_number": "75832366",
"billing_address": "",

For this I have trying to adding the OkHttpClient library class
but I fail to sending the JSON object as body of the http POST request. The following way I have try to build the body and process the post request.

OkHttpClient client = new OkHttpClient();

RequestBody body = new RequestBody() {
public MediaType contentType() {
return ApplicationContants.JSON;

public void writeTo(BufferedSink sink) throws IOException {
// This is the place to add json I thought. But How could i do this

Request request = new Request.Builder()
.url(ApplicationContants.BASE_URL + ApplicationContants.CUSTOMER_URL)

What is the way I send the JSON object to the server via POST request.

Thanks in advance.

Answer Source

Try this

Add Gradle depends compile 'com.squareup.okhttp3:okhttp:3.2.0'

public static JSONObject foo(String url, JSONObject json) {
        JSONObject jsonObjectResp = null;

        try {

            MediaType JSON = MediaType.parse("application/json; charset=utf-8");
            OkHttpClient client = new OkHttpClient();

            okhttp3.RequestBody body = RequestBody.create(JSON, json.toString());
            okhttp3.Request request = new okhttp3.Request.Builder()

            okhttp3.Response response = client.newCall(request).execute();

            String networkResp = response.body().string();
            if (!networkResp.isEmpty()) {
                jsonObjectResp = parseJSONStringToJSONObject(networkResp);
        } catch (Exception ex) {
            String err = String.format("{\"result\":\"false\",\"error\":\"%s\"}", ex.getMessage());
            jsonObjectResp = parseJSONStringToJSONObject(err);

        return jsonObjectResp;

Parse Response

   private static JSONObject parseJSONStringToJSONObject(final String strr) {

    JSONObject response = null;
    try {
        response = new JSONObject(strr);
    } catch (Exception ex) {
        //  Log.e("Could not parse malformed JSON: \"" + json + "\"");
        try {
            response = new JSONObject();
            response.put("result", "failed");
            response.put("data", strr);
            response.put("error", ex.getMessage());
        } catch (Exception exx) {
    return response;
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download