对于我正在制作的应用程序,我需要从特定网址获取数据(CSV或JSON文件),但我无法使其运行。看来我不得不在另一个线程(NetworkOnMainThreadException)中发出请求,但我不知道该怎么做。请求网页并检索数据的正确方法是什么?如何从Android中的URL获取数据?
0
A
回答
1
尽管这是一个重复的,我要answear。 要做到这一点,最好的办法是使用异步方法:
class MyTask extends AsyncTask<Integer, Integer, String> {
@Override
protected String doInBackground(Integer... params) {
for (; count <= params[0]; count++) {
try {
Thread.sleep(1000);
publishProgress(count);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
JSONObject response = getJSONObjectFromURL("your http link"); // calls method to get JSON object
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return "Task Completed.";
}
@Override
protected void onPostExecute(String result) {
progressBar.setVisibility(View.GONE);
}
@Override
protected void onPreExecute() {
txt.setText("Task Starting...");
}
@Override
protected void onProgressUpdate(Integer... values) {
txt.setText("Running..."+ values[0]);
progressBar.setProgress(values[0]);
}
}
这里是类从HTTP GET JSON和解析它。当调用方法传入url时,您希望从中获取json对象。
public static JSONObject getJSONObjectFromURL(String urlString) throws IOException, JSONException {
HttpURLConnection urlConnection = null;
URL url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(10000 /* milliseconds */);
urlConnection.setConnectTimeout(15000 /* milliseconds */);
urlConnection.setDoOutput(true);
urlConnection.connect();
BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));
char[] buffer = new char[1024];
String jsonString = new String();
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
jsonString = sb.toString();
System.out.println("JSON: " + jsonString);
urlConnection.disconnect();
return new JSONObject(jsonString);
}
2
使用AsyncTask并将所有网络动作放入“doInBackground”,并在“onPostExecute”中处理结果数据。
的例子中,你可以检查这个帖子https://stackoverflow.com/a/18827536/2377961
相关问题
- 1. 如何从android中的json url获取新的数据更新?
- 2. 如何从URL中获取数据
- 3. 如何从Android中的JSON或URL获取特定数据?
- 4. 如何通过url获取数据android
- 5. Android - 从URL问题获取数据
- 6. 获取android中的url内的数据
- 7. 如何从URL获取数据
- 8. 如何从java.sql.Connection获取数据库url?
- 9. 如何从URL中提取数据的获取响应
- 10. 如何获取从服务器获取数据的url/xmlhttprequest?
- 11. 从phonegap中获取url的数据
- 12. 从URL contiuously获取数据
- 13. 从URL获取Xml数据
- 14. 如何从Android数据库的现有表中获取数据
- 15. 如何从android中的url获取参数?
- 16. 如何从php文件中的url中获取JSON数据。
- 17. 如何从android获取数据?
- 18. 如何从Android服务获取数据?
- 19. 如何从asp.net获取数据到android?
- 20. 如何从URL中获取JSON参数
- 21. 如何根据url从php中获取数据?
- 22. 如何读取从特定的URL一些数据在Android中
- 23. 如何从url获取变量中的数据。 javascript/phonegap
- 24. 如何从轨道控制器中的URL获取数据?
- 25. 如何从jQuery中的外部URL获取数据?
- 26. 如何从Java中的URL获取JSON数据?
- 27. 如何从JavaScript中的链接URL获取数据请求?
- 28. 如何从php中的多个url获取数据?
- 29. 从URL中获取密码数据
- 30. 在ASP.NET中从URL获取数据
您是否有获取数据的URL? – tahsinRupam
[使用android进行HTTP请求]的可能重复(http://stackoverflow.com/questions/3505930/make-an-http-request-with-android) – androidnoobdev
[NetworkOnMainThreadException]的可能重复(http:// stackoverflow .COM /问题/ 5150637/networkonmainthreadexception) – petey