android - 两个依赖的 HttpUrlConnection 与 android 中的 AsyncTask

标签 android android-asynctask httpurlconnection

我正在用android开发一个应用程序,我是新手 在我的项目的一部分中,我需要从用户的输入字段中获取数据,然后创建一个到服务器的 Http 连接,并将第一次调用的结果与其他一些字段一起放入另一个到服务器的 Http 连接中,我不知道实现它的正确方法是什么。

public class TwoHttpActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_transport);
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }
}
public static class PlaceholderFragment extends Fragment {

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

         button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                params[0] = firstText;
                .   .   .   .
                .   .   .   .
                params[3] = secondText;
            }
        });
     }
}

问题: 现在我需要将 params[0] 发送到一个 url http://myserver/urlOne然后从服务器获取结果并将它们与 params[1] 一起放入 params[3] 并将它们一起发送到服务器的第二个 url http://myserver/urlTwo

因为这些连接应该在 classes extends from AsyncTask 中进行,所以我认为不可能只拥有

public class FirstUrlTask extends AsyncTask<String[], Void, Void> {
  //the class handles the call to first url inside
  //doInBackground(String[]... params) 
}

public class SecondUrlTask extends AsyncTask<String[], Void, Void> {
       //the class handles the call to second url inside
  //doInBackground(String[]... params) 
    }

然后

 firstUrlTask.execute(..); 
 secondUrlTask.execute(..);

button.setOnClickListener(new View.OnClickListener()

由于它们是异步任务,因此不清楚哪些任务将首先执行,因此请帮助我以正确的方法来执行此操作,请提供您的答案以及详细信息和代码示例。

最佳答案

这样做:

第一步:调用 FirstUrlTask​​ 异步类

firstUrlTask.execute(..); 

第二步:在FirstUrlTask​​的onPostExecute()中调用SecondUrlTask​​Async类

public class FirstUrlTask extends AsyncTask<String[], Void, Void> {

  //doInBackground(String[]... params) {}  

   protected void onPostExecute(ClassTypeYouReturning result){
      super.onPostExecute();
      secondUrlTask.execute(..);   //Call to second url 
   }
}

上述方法将确保第一次调用将对第一个 url 进行,并且在第一个 url 的响应上,将调用第二个 url。

关于android - 两个依赖的 HttpUrlConnection 与 android 中的 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690277/

相关文章:

android - 以编程方式从 Activity/服务/接收器更新小部件

android - 仅学习 React Native 是否足以构建 iOS 和 Android 应用程序?

viewpager中的Android异步任务

java - android studio 中的 Tabitem 绑定(bind)

android - 在 doInBackground 的 AsyncTask 中更改 UI 线程的 View ,并不总是抛出 CalledFromWrongThreadException

Android:带有预览回调的相机异步任务

java - HttpURLConnection 不向服务器发送 cookie 值

php - 使用 HttpURLConnection 时,mysql 上的 $_POST 为空

java - 使用 FIddler 捕获 Android 应用程序流量

android - 如何测试禁用 ios 和 android 上的自动备份?