Alex Knight
Alex Knight

Reputation: 79

Android HttpPost Could not execute

I've created an activity in my Android project which has two editText fields and a button. The button is meant to post the values of the fields to a server to check for login. I've built a "template" system which is just trying to get a response from the server. I'm building this locally and testing it locally. All I get is "Could not execute method of the activity"

Here's some code:

public void attemptLogin(View view) {

    context = getApplicationContext();
    toastMsg = "Attempting Login";

    Toast toast = Toast.makeText(context, toastMsg, duration);

    editText = (EditText)findViewById(R.id.username);
    username = editText.getText().toString();

    editText = (EditText)findViewById(R.id.password);
    password = editText.getText().toString();

    int username_length = username.length();
    int password_length = password.length();

    if(username_length != 0 || password_length != 0) {

        HttpClient httpClient = new DefaultHttpClient();

        HttpPost httpPost = new HttpPost("http://10.1.55.6:8888/Testing/Android/php/login.php");
        List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
        nameValuePair.add(new BasicNameValuePair("username","value"));
        nameValuePair.add(new BasicNameValuePair("password","value"));

        try {

            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));

        } catch (UnsupportedEncodingException e){

            e.printStackTrace();

        }

        try {

            HttpResponse response = httpClient.execute(httpPost);

            Log.d("Http Post Response:", response.toString());

        } catch (ClientProtocolException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }


    } else {

        username = "IT IS EMPTY!";
        password = "IT IS EMPTY!";

    }

    Log.v("Username:", username);
    Log.v("Password:", password);

}

and error log

03-03 16:52:33.891    2212-2212/com.ak273.chefs E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.ak273.chefs, PID: 2212
java.lang.IllegalStateException: Could not execute method of the activity
        at android.view.View$1.onClick(View.java:3823)
        at android.view.View.performClick(View.java:4438)
        at android.view.View$PerformClick.run(View.java:18422)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at android.view.View$1.onClick(View.java:3818)
        at android.view.View.performClick(View.java:4438)
        at android.view.View$PerformClick.run(View.java:18422)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
        at libcore.io.IoBridge.connect(IoBridge.java:112)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
        at java.net.Socket.connect(Socket.java:843)
        at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
        at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
        at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
        at com.ak273.chefs.loginActivity.attemptLogin(loginActivity.java:83)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at android.view.View$1.onClick(View.java:3818)
        at android.view.View.performClick(View.java:4438)
        at android.view.View$PerformClick.run(View.java:18422)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)

Thanks for any help.

Upvotes: 0

Views: 192

Answers (3)

Dutn
Dutn

Reputation: 38

You should using AsyncTask to connect. http://www.android-ios-tutorials.com/android/android-asynctask-example-download-progress/

Upvotes: -1

Abaab Rio
Abaab Rio

Reputation: 36

this the AsyncTask you need. you should put your http request methode in doInBackground(Void... params)


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


   @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub

    }
    @Override
    protected String doInBackground(Void... params) {
     // TODO Auto-generated method stub

        return null;
    }

    @Override
    protected void onPostExecute(String result) {
     // TODO Auto-generated method stub

        super.onPostExecute(result);

    }
}

Upvotes: 2

ucsunil
ucsunil

Reputation: 7504

Android is intentionally designed to prevent networking calls made using the main thread. You need to run your networking requests using either a background thread that you create or using an AsyncTask.

I'd recommend using an AsyncTask for what you need. Us this for your reference http://developer.android.com/reference/android/os/AsyncTask.html.

Upvotes: 0

Related Questions