组合 GET 和 POST 请求 HttpURLConnection
Combined GET and POST requests HttpURLConnection
我正在寻找关于以下内容的一些建议,我有一个 HttpUtil class (util),我在其中有我的 sendGetRequest- 和 sendPostRequest 方法。
我使用它们执行 成功 登录到我要从中获取一些数据的网站。
现在,我在 Asynctask 中的 MainActivity 中调用这些方法:
protected Boolean doInBackground(Void... params) {
try {
//1. GET request
util.sendGetRequest(loginURL, null);
//2. Post request
util.sendPostRequest(loginURL, null);
//3. Final GET request
util.sendGetRequest(resultURL, null);
// Read stream
String[] response = util.readMultipleLinesRespone();
for (String line : response) {
System.out.println(line);
}
} catch (InterruptedException e) {
return false;
} catch (Exception e) {
e.printStackTrace();
}
}
我正在寻找一种解决方案,以便一个 等待 另一个完成(第一个得到然后 post,最后得到),如果可能的话我想要保持此 util.class 完好无损,而不是将所有内容都放在 Asynctask (doInBackground) 中。
这是可能的还是我的方法不对?
请大家多多指教
提前致谢。
我通常使用的方法是这样的:
- 首先,考虑使用事件,例如像 this 这样的库,它不仅可以解耦您的代码,还可以在第一个 HttpGet 请求完成时轻松通知您的 activity。
- 接下来,在 doInBackground 中启动 GET 请求,然后在过程完成后通知您的 activity - 通常在 onPostExecute[=24= 中]
- 在您的 activity 中,假设您使用 EventBus 库,您可以执行下一个 AsyncTask,它将执行您的下一个任务,就像相应地执行 POST 请求一样。
使用这种方法应该会让您的生活更轻松 - 特别是可以帮助您了解某件事何时完成,以便您可以根据需要继续执行下一个任务。
祝你好运!
你可以有两个 AsyncTasks。一个用于获取,另一个用于 post。首先执行get请求。然后在第一个 AsyncTask 的 onPostExecute 中执行在 doInBackground();
中发送 post 请求的第二个 AsyncTask
您的 HttpUtil class 应该以某种方式发出响应已收到的信号。
例如,将此代码放入 HttpUtil 以指示操作结束:
synchronized (this) {
done = true;
notifyAll();
}
此代码将等待操作结束:
while(!util.isDone()) {
try {
synchronized(util) { util.wait(); }
} catch(Exception e) { ... }
}
我正在寻找关于以下内容的一些建议,我有一个 HttpUtil class (util),我在其中有我的 sendGetRequest- 和 sendPostRequest 方法。 我使用它们执行 成功 登录到我要从中获取一些数据的网站。 现在,我在 Asynctask 中的 MainActivity 中调用这些方法:
protected Boolean doInBackground(Void... params) { try { //1. GET request util.sendGetRequest(loginURL, null); //2. Post request util.sendPostRequest(loginURL, null); //3. Final GET request util.sendGetRequest(resultURL, null); // Read stream String[] response = util.readMultipleLinesRespone(); for (String line : response) { System.out.println(line); } } catch (InterruptedException e) { return false; } catch (Exception e) { e.printStackTrace(); } }
我正在寻找一种解决方案,以便一个 等待 另一个完成(第一个得到然后 post,最后得到),如果可能的话我想要保持此 util.class 完好无损,而不是将所有内容都放在 Asynctask (doInBackground) 中。 这是可能的还是我的方法不对?
请大家多多指教
提前致谢。
我通常使用的方法是这样的:
- 首先,考虑使用事件,例如像 this 这样的库,它不仅可以解耦您的代码,还可以在第一个 HttpGet 请求完成时轻松通知您的 activity。
- 接下来,在 doInBackground 中启动 GET 请求,然后在过程完成后通知您的 activity - 通常在 onPostExecute[=24= 中]
- 在您的 activity 中,假设您使用 EventBus 库,您可以执行下一个 AsyncTask,它将执行您的下一个任务,就像相应地执行 POST 请求一样。
使用这种方法应该会让您的生活更轻松 - 特别是可以帮助您了解某件事何时完成,以便您可以根据需要继续执行下一个任务。
祝你好运!
你可以有两个 AsyncTasks。一个用于获取,另一个用于 post。首先执行get请求。然后在第一个 AsyncTask 的 onPostExecute 中执行在 doInBackground();
中发送 post 请求的第二个 AsyncTask您的 HttpUtil class 应该以某种方式发出响应已收到的信号。 例如,将此代码放入 HttpUtil 以指示操作结束:
synchronized (this) {
done = true;
notifyAll();
}
此代码将等待操作结束:
while(!util.isDone()) {
try {
synchronized(util) { util.wait(); }
} catch(Exception e) { ... }
}