用于Android的Java中的异步POST请求

时间:2013-06-05 14:28:24

标签: java android post asynchronous http-post

 public void btnWeb_Click(View view){
     String url="http://localhost/test/index.php";

     List<NameValuePair> dict = new ArrayList<NameValuePair>();
     dict.add(new BasicNameValuePair("url",url));
     dict.add(new BasicNameValuePair("id", "3"));

     PostReq postreq= new PostReq();
     postreq.execute(dict);

     String result="";
     while(result==""){ result= postreq.content;}  
     System.out.println(result); }

PostReq是以异步方式对服务器执行Post请求的类。

问题在于,如果我没有放置while,则打印函数将变量RESULT打印为空,因为它没有等待线程postreq.execute(dict)完成操作。

我强制等待WHILE,但WHILE会阻止主线程。

如何等待方法执行,然后异步将值赋给变量RESULT

例如,在Windows Phone的C#中,我这样做了:

 async void button_click() {
    Dictionary<string, string> dict = new Dictionary<string, string>();
    dict.Add("id", "3");
string url="http://localhost/test/index.php";
    PostReq pr= new PostReq(url,dict);
    String risposta = await pr.getRisposta(); }

使用Java for Android而不是我该怎么办?

1 个答案:

答案 0 :(得分:0)

看看AsyncTask。对于来自另一个线程的结果,在while循环中重复检查结果不是一个好主意。

http://developer.android.com/reference/android/os/AsyncTask.html