简体   繁体   中英

Unexpected status line when making post request from android device

Hi I have an Android app that needs to connect to an API (currently running locally) to authenticate the user, so I'm trying to send a POST request with a JSON object as the request body but whenever I try to login I get the following error:

Unexpected status line: ��
           java.net.ProtocolException: Unexpected status line: ��

Here's my code:

    String API_URL = "http://10.0.2.2:8443/api/";
        try {
            URL url = new URL(API_URL);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            try {
                urlConnection.setDoOutput(true);
                urlConnection.setRequestMethod("POST");
                urlConnection.setRequestProperty("Content-Type", "application/json");
                urlConnection.connect();

                JSONObject jsonObject = new JSONObject();
                jsonObject.put("customerId", 1);
                jsonObject.put("password" , mPassword);
                jsonObject.put("username" , mEmail);

                DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
                wr.writeBytes(jsonObject.toString());
                Log.d("REQUEST BODY", jsonObject.toString());
                wr.flush();
                wr.close();

                int response = urlConnection.getResponseCode();
                Log.d("RESPONSE", String.valueOf(response));
                if(response == HttpURLConnection.HTTP_OK) {
                    InputStream bis = new BufferedInputStream(urlConnection.getInputStream());
                    return getStringFromInputStream(bis);
                }
            }
            finally{
                urlConnection.disconnect();
            }
        }
        catch(Exception e) {
            Log.e("ERROR", e.getMessage(), e);
            return null;
        }

Can anyone please tell me what I might be doing wrong? Thanks!

EDIT

Not sure if this helps but the problem seems to occur when I call urlConnection.getResponseCode(); .

Possibly you are recycling the connection

try adding urlConnection.setRequestProperty("Connection", "close"); before connecting

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM