Sathya Baman
Sathya Baman

Reputation: 3515

HttpURLconnection continuously returns error - Android

Hi iam trying to post a simple json Object and get the results using Httpurlconnection. I tried but am not getting any error or any response. can some one help me to fix this. tnx.

RequestExternalResouce class

package sathyabamanan.com.duoproject.comman;

import android.content.Context;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

/**
 * Created by baman on 6/25/17.
 */

  public class RequestExternalResouce extends AsyncTask<String, Void, String> {

    private Context mContext;
    private OnTaskDoneListener onTaskDoneListener;
    private String urlStr = "";
    private String  requestBody = "";

    public RequestExternalResouce(Context context, String url, String body, OnTaskDoneListener onTaskDoneListener) {
        this.mContext = context;
        this.urlStr = url;
        this.requestBody= body;
        this.onTaskDoneListener = onTaskDoneListener;
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            URL mUrl = new URL(urlStr);
            HttpURLConnection httpConnection = (HttpURLConnection) mUrl.openConnection();
            httpConnection.setRequestMethod("POST");
            httpConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            httpConnection.setUseCaches(false);
            httpConnection.setAllowUserInteraction(false);
            httpConnection.setConnectTimeout(1000000);
            httpConnection.setReadTimeout(1000000);
            httpConnection.connect();

            //get Response
            int responseCode = httpConnection.getResponseCode();

            if (responseCode == HttpURLConnection.HTTP_OK) {

                DataOutputStream localDataOutputStream = new DataOutputStream(httpConnection.getOutputStream());
                localDataOutputStream.writeBytes(requestBody.toString());
                localDataOutputStream.flush();
                localDataOutputStream.close();

                BufferedReader br = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
                StringBuilder sb = new StringBuilder();
                String line;
                while ((line = br.readLine()) != null) {
                    sb.append(line + "\n");
                }
                br.close();
                return sb.toString();
            }

        } catch (IOException e) { e.printStackTrace();
        } catch (Exception ex) { ex.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (onTaskDoneListener != null && s != null) {
            onTaskDoneListener.onTaskDone(s);
        } else
            onTaskDoneListener.onError();
    }


    public interface OnTaskDoneListener {
        void onTaskDone(String responseData);
        void onError();
    }

}

Activity Methods

public void sendLloginRequest(View v){
    login_email = email.getText().toString();
    login_password =  password.getText().toString();
    String getLoginUrl = getRequestBody();
    new RequestExternalResouce(context, new Utility().getLoginUrl(), getLoginUrl, new RequestExternalResouce.OnTaskDoneListener() {
        @Override
        public void onTaskDone(String responseData) {
            System.out.println("Success :  in activity"+ responseData);
        }

        @Override
        public void onError() {
            System.out.println("Error :  ");
        }
    }).execute();
}


public String getRequestBody(){
    JSONObject requestBody = new JSONObject();


   JSONArray scopeArray = new JSONArray();
        try {
            scopeArray.put("all_all");
            requestBody.put("userName", login_email);
            requestBody.put("password", login_password);
            requestBody.put("scope", scopeArray);
            requestBody.put("console", "AGENT_CONSOLE");
            requestBody.put("clientID", "e8ea7bb0-5026-11e7-a69b-b153a7c332b9");
        } catch (JSONException e1) {
            e1.printStackTrace();
        }

        return requestBody.toString();
    }

JSon Object

{
    "userName": "[email protected]",
    "password": "AD123",
    "scope": [
        "all_all"
    ],
    "console": "AGENT_CONSOLE",
    "clientID": "e8ea7bb0-5026-11e7-a69b-b153a7c332b9"
}

Upvotes: 0

Views: 517

Answers (1)

VinayagaSundar
VinayagaSundar

Reputation: 1701

Updated the class.

package sathyabamanan.com.duoproject.comman;

import android.content.Context;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

/**
 * Created by baman on 6/25/17.
 */

  public class RequestExternalResouce extends AsyncTask<String, Void, String> {

    private Context mContext;
    private OnTaskDoneListener onTaskDoneListener;
    private String urlStr = "";
    private String  requestBody = "";

    public RequestExternalResouce(Context context, String url, String body, OnTaskDoneListener onTaskDoneListener) {
        this.mContext = context;
        this.urlStr = url;
        this.requestBody= body;
        this.onTaskDoneListener = onTaskDoneListener;
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            URL mUrl = new URL(urlStr);
            HttpURLConnection httpConnection = (HttpURLConnection) mUrl.openConnection();
            httpConnection.setRequestMethod("POST");
            httpConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            httpConnection.setUseCaches(false);
            httpConnection.setAllowUserInteraction(false);
            httpConnection.setConnectTimeout(1000000);
            httpConnection.setReadTimeout(1000000);
            httpConnection.setDoOutput(true);


            DataOutputStream localDataOutputStream = new DataOutputStream(httpConnection.getOutputStream());
            localDataOutputStream.writeBytes(requestBody.toString());
            localDataOutputStream.flush();
            localDataOutputStream.close();


            int responseCode = httpConnection.getResponseCode();
            httpConnection.connect();

            BufferedReader br = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            br.close();



            if (responseCode == HttpURLConnection.HTTP_OK) {
                return sb.toString();
            }

        } catch (IOException e) { e.printStackTrace();
        } catch (Exception ex) { ex.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (onTaskDoneListener != null && s != null) {
            onTaskDoneListener.onTaskDone(s);
        } else
            onTaskDoneListener.onError();
    }


    public interface OnTaskDoneListener {
        void onTaskDone(String responseData);
        void onError();
    }

}

Upvotes: 1

Related Questions