【发布时间】:2015-11-04 23:55:39
【问题描述】:
我正在调用一个 Web 服务以从 json 中获取一个对象,然后我需要将我创建的字符串对象传递给另一个 Web 服务。我在 AsyncTask 中有每个 Web 服务调用。我无法将第一个名为 map 的 jsonObject 传递给另一个子类。不要担心实际调用,我想将字符串“map”传递给第二个 AsyncTask 以便能够在网络调用中使用它。这两个类都是子类。
public class aisleStoreID extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String urlExtension = "getpartnerstore?latitude=" + lat + "&longitude=" + lng + "&partner_id=" + "60" + "&vendor_store_nbr=" + id + "";
final String authToken = Utils.md5(urlExtension);
String urlString = "http://aisle411.ws/webservices2/getpartnerstore.php?latitude=" + lat + "&longitude=" + lng + "&partner_id=" + 60 + "&vendor_store_nbr=" + id + "&auth=" + authToken;
InputStream inputStream = null;
try {
HttpResponse response = ConnectionHelper.executeHttpGetStoreMap(urlString);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
result = sb.toString();
if (response != null) {
result = response.toString();
JSONObject jsonObject = new JSONObject(String.valueOf(sb));
JSONArray arr = jsonObject.getJSONArray("stores");
JSONObject jObj = arr.getJSONObject(0);
String map = jObj.getString("store_map_url");
Intent intent = new Intent(this, getStoreMap.class);
intent.putExtra("retailer_store_id", map);
startActivity(intent);
}
} catch (Exception e) {
System.out.println(e.getMessage());
return e.getMessage();
}
return result;
}
@Override
protected void onPostExecute(String result) {
System.out.println(" What's in it" + result);
}
}
public class getStoreMap extends AsyncTask<String, String, String> {
Bundle bundle = getIntent().getExtras();
String storeMap = bundle.getString("retailer_store_id");
@Override
protected String doInBackground(String... params) {
String urlExtension = "map?latitude=" + lat + "&longitude=" + lng + "&partner_id=" + "60" + "&retailer_store_id=" + map + "";
final String authToken = Utils.md5(urlExtension);
String urlString = "http://aisle411.ws/webservices2/map.php?latitude=" + lat + "&longitude=" + lng + "&partner_id=" + 60 + "&retailer_store_id=" + map + "&auth=" + authToken;*/
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
}
【问题讨论】:
-
看起来不错。什么是确切的问题? storeMap 为空?
-
一开始你为什么要这样做?为什么第一个
AsyncTask不能完成doInBackground中的所有工作?无论如何,您将这两个AsyncTasks紧密耦合,因此它们在其他地方并不是真正可重用的......
标签: java android android-asynctask