Ashish
Ashish

Reputation: 77

getting error in doing operations of http url operation in android

I am trying to send sms from my android app but getting the error. i am using AsyncTask class and the code which put in doInBackground method it gives an error.

PLEASE HELP ME I HAVE PURCHASED THE SMS SERVICE BUT I AM NOT BEING ABLE TO MAKE CALL OF SERVICE.

SendFeedback class

private class SendfeedbackJob extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String[] params) {
        // do above Server call here

        try {
            // Construct data
            String apiKey = "apikey=" + "--MY API KEY--";
            String message = "&message=" + "New order by "+ userName+" 
            and dilivery "+userAddress;
            String sender = "&sender=" + "TXTLCL";
            String numbers = "&numbers=" + "91 CONTACT NO.";

            // Send data
            HttpURLConnection conn = (HttpURLConnection) new 
            URL("https://api.textlocal.in/send/?").openConnection();
            String data = apiKey + numbers + message + sender;
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Length", 
            Integer.toString(data.length()));
            conn.getOutputStream().write(data.getBytes("UTF-8"));
            final BufferedReader rd = new BufferedReader(new 
            InputStreamReader(conn.getInputStream()));
            final StringBuffer stringBuffer = new StringBuffer();
            String line;
            while ((line = rd.readLine()) != null) {
                stringBuffer.append(line);
            }
            rd.close();

            //return stringBuffer.toString();




            Toast.makeText(getContext(),stringBuffer.toString(),
            Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            System.out.println("Error SMS "+e);
            //return "Error "+e;
            Toast.makeText(getContext(),"Error 
            "+e.toString(),Toast.LENGTH_LONG).show();
        }
        return "some message";
    }

    @Override
    protected void onPostExecute(String message) {
        //process message

    }
}

Oncreate method

SendfeedbackJob job = new SendfeedbackJob();
job.execute();

I am getting this Error

'E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
              Process: com.agssoftech.shlokenterprise, PID: 12204
              java.lang.RuntimeException: An error occurred while executing 
doInBackground()
                  at android.os.AsyncTask$3.done(AsyncTask.java:325)
                  at 
java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                  at 
java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                  at 
java.util.concurrent.FutureTask.run(FutureTask.java:242)
                  at 
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
                  at 

java.util.concurrent.ThreadPoolExecutor.runWorker
(ThreadPoolExecutor.java:1133)
                  at 
java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:607)
                  at java.lang.Thread.run(Thread.java:761)
               Caused by: java.lang.RuntimeException: Cant create handler 
inside thread that has not called Looper.prepare()
                  at android.os.Handler.<init>(Handler.java:208)
                  at android.os.Handler.<init>(Handler.java:122)
                  at android.widget.Toast$TN$2.<init>(Toast.java:341)
                  at android.widget.Toast$TN.<init>(Toast.java:341)
                  at android.widget.Toast.<init>(Toast.java:108)
                  at android.widget.Toast.makeText(Toast.java:261)
                  at com.agssoftech.shlokenterprise.Fragments
.PlaceOrderFragment$SendfeedbackJob.doInBackground
(PlaceOrderFragment.java:224)
                  at 
com.agssoftech.shlokenterprise.Fragments
.PlaceOrderFragment$SendfeedbackJob.doInBackground
(PlaceOrderFragment.java:190)
                  at android.os.AsyncTask$2.call(AsyncTask.java:305)
                  at 
java.util.concurrent.FutureTask.run(FutureTask.java:237)
                  at 
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                  at 
java.util.concurrent.ThreadPoolExecutor.runWorker
(ThreadPoolExecutor.java:1133) 
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run
ThreadPoolExecutor.java:607) 
                  at java.lang.Thread.run(Thread.java:761) 

Upvotes: 1

Views: 29

Answers (1)

2Dee
2Dee

Reputation: 8629

You can't call Toast.makeText() from the doInBackground method as it is not running on the UI thread. Move your calls to Toast.makeText() to the onPostExecute method, which runs on the UI thread.

Upvotes: 1

Related Questions