HttpPost给出了Illegalstateexception

时间:2013-08-20 21:42:43

标签: php android

我正在尝试连接到我使用httpPost请求创建的localhost(WAMP)Web服务。它一直失败并给出IllegalStateExecption。任何人都可以提供一些问题的洞察力吗?谢谢!

String songtext,artisttext;
HttpResponse response ;
EditText song;
EditText artist;
EditText party;
HttpPost post;
HttpClient client;
ArrayList<NameValuePair> nameValuePairs;
String URL = "http://10.0.2.2/GoDJ/index.php?r=request/create";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    song = (EditText)findViewById(R.id.songTitle);
    artist = (EditText)findViewById(R.id.songArtist);
    party = (EditText)findViewById(R.id.partyid);



}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void uploadToDB(View view)
{
    //send user message
    Context context = getApplicationContext();
    CharSequence text = "Letting the DJ Know!!";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
    //add values
    nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("party", party.getText().toString()));
    nameValuePairs.add(new BasicNameValuePair("title", song.getText().toString()));
    nameValuePairs.add(new BasicNameValuePair("artist", artist.getText().toString()));

    try
    {
        //instantiate request
        client = new DefaultHttpClient();
        post = new HttpPost(URL);
        text = "Set Up Client and Post";
        toast = Toast.makeText(context, text, duration);
        toast.show();

        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        text = "Entity Set";
        toast = Toast.makeText(context, text, duration);
        toast.show();
        response = client.execute(post);
        text = "Post Executed SUCCESS";
        toast = Toast.makeText(context, text, duration);
        toast.show();

    }

    catch(Exception e)
    {
        text = "FAILURE";
        toast = Toast.makeText(context, text, duration);
        toast.show();
        e.printStackTrace();
    }
}

}

2 个答案:

答案 0 :(得分:0)

这是因为您在Android 4上运行并且在UI线程上不允许网络

请使用异步任务,它将解决问题。

Here是一个如何使用它的示例。

答案 1 :(得分:0)

一种简单的方法是使用this lib 并使用@Background注释使用方法进行后调用。