I'm trying to make a post call with HttpURLConnection & sending JSON data via HttpURLConnection's OutputStream: 

See my class below:

```
package com.app.data.pojos;

import android.os.AsyncTask;
import android.util.Log;
import com.app.xyz.data.GDParser;
import com.app.xyz.model.GDUser;
import com.app.xyz.model.GDUserStatus;
import com.app.xyz.utils.APrefs;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Created by arynaim on 10/12/17.
 */

public class PostUserStatus extends AsyncTask<String, Void, GDUserStatusResponse> {

    private static final String TAG = "PostUserStatus";
    private GDUser gdUser;

    public PostUserStatus(GDUser gdUser) {
        this.gdUser = gdUser;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

    }

    @Override
    protected GDUserStatusResponse doInBackground(String... urls) {

        Log.i(TAG,"doInBackground(), gDUserStatusResponse url:"+urls[0]);
        HttpURLConnection httpURLConnection = null;
        GDUserStatus gdUserStatus = null;
        JsonElement jsonElemnt = null;
        JsonObject jsonObject = null;
        GDUserStatusResponse gDUserStatusResponse = null;
        try {
            URL url = new URL(urls[0]);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setRequestProperty("Content-length", "0");
            httpURLConnection.setUseCaches(false);
            httpURLConnection.setAllowUserInteraction(false);
            httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpURLConnection.setRequestProperty("Authorization", new APrefs().getNMToken());
            //httpURLConnection.connect();
            JSONObject userIdJsonObject = new JSONObject();
            userIdJsonObject.put("userID",getGdUser().getUserId());
            //post json via OutputStream
            OutputStream os = httpURLConnection.getOutputStream();
            os.write(userIdJsonObject.toString().getBytes());
            os.flush();
            Log.i(TAG,"doInBackground(), http request"+url.toString());

            int status = httpURLConnection.getResponseCode();

            switch (status) {
                case 200:
                    Log.i(TAG,"doInBackground(), http response status:"+status);
                    BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
                    StringBuilder sb = new StringBuilder();
                    String line;
                    while ((line = br.readLine()) != null) {
                        sb.append(line + "\n");
                    }

                    jsonElemnt = new JsonParser().parse(sb.toString());
                    jsonObject = jsonElemnt.getAsJsonObject();
                    gdUserStatus = new GDParser().parseStatusResponse(jsonObject);
                    gDUserStatusResponse = new GDUserStatusResponse();
                    gDUserStatusResponse.setGdUserStatus(gdUserStatus);
                    br.close();
                    break;
                default:
                    Log.e(TAG,"doInBackground(), http response error status:"+status);
                    //TODO: handle error responses
                    //TODO: if stale token refresh & try again
                    break;

            }

        } catch (IOException ex) {

            ex.printStackTrace();

        } catch (Exception ex) {

            ex.printStackTrace();

        } finally {
            if (httpURLConnection != null) {
                try {
                    httpURLConnection.disconnect();
                } catch (Exception ex) {
                ex.printStackTrace();
                }
            }
        }

        return gDUserStatusResponse;
    }//end doInBackgroud

    protected void onPostExecute(GDUserStatusResponse gDUserStatusResponse) {

        Log.i(TAG,"onPostExecute(), gDUserStatusResponse:"+gDUserStatusResponse);

    }

    public GDUser getGdUser() {
        return gdUser;
    }

    public void setGdUser(GDUser gdUser) {
        this.gdUser = gdUser;
    }
}

```

However when I write to 

```
os.write(userIdJsonObject.toString().getBytes());

```

I'm getting this exception:

```
10-13 16:30:46.737 15395-17467/com.app.xyz I/PostUserStatus: doInBackground(), gDUserStatusResponse url:https://development.xyz.com/api/v1/users/status
10-13 16:30:46.741 15395-17467/com.app.xyz I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-13 16:30:46.741 15395-17467/com.app.xyz I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err: java.net.ProtocolException: exceeded content-length limit of 0 bytes
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at com.android.okhttp.internal.http.RetryableSink.write(RetryableSink.java:58)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at com.android.okhttp.okio.RealBufferedSink.flush(RealBufferedSink.java:221)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at com.android.okhttp.okio.RealBufferedSink$1.flush(RealBufferedSink.java:204)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at com.app.xyz.data.pojos.PostUserStatus.doInBackground(PostUserStatus.java:63)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at com.app.xyz.data.pojos.PostUserStatus.doInBackground(PostUserStatus.java:24)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:304)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
10-13 16:30:46.833 15395-17467/com.app.xyz W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
10-13 16:30:46.834 15395-17467/com.app.xyz W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
10-13 16:30:46.834 15395-17467/com.app.xyz W/System.err:     at java.lang.Thread.run(Thread.java:762)
10-13 16:30:46.835 15395-15395/com.app.xyz I/PostUserStatus: onPostExecute(), gDUserStatusResponse:null

```

I don't want to use any Http libraries other than the base provided with Android/Java.