0

我正在尝试连接到使用 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();
    }
}

}

4

2 回答 2

0

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

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

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

于 2013-08-20T21:50:20.927 回答
0

一个简单的方法是使用这个库 并使用@Background注释的方法进行后调用。

于 2013-08-20T21:52:32.873 回答