从互联网上检索数据

时间:2012-09-13 10:01:11

标签: java android

以下代码来自我的第一个互联网应用。我没有测试过,因为我没有可用的WLAN。我接下来要做的是从网站上检索数据。

是否有任何程序可以完成此类任务?

JAVA代码:

public class Internet00 extends Activity {

TextView tv00;
public boolean isNetworkAvailable() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netWorkinfo = cm.getActiveNetworkInfo();

    if (netWorkinfo != null && netWorkinfo.isConnected()) {
        return true;
    }
    return false;
}
private void readStream(InputStream in) {
    BufferedReader reader = null;
    try {
        reader = new BufferedReader(new InputStreamReader (in));
        String line="";
        while ( (line=reader.readLine()) != null)
            tv00.setText(line);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
          try {
            reader.close();
          } catch (IOException e) {
            e.printStackTrace();
            }
        }
    }
}
@SuppressLint({ "ParserError", "NewApi" })
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_internet00);

    tv00 = (TextView) findViewById(R.id.tv00);
    if(isNetworkAvailable()) {
        StrictMode.ThreadPolicy policy = new StrictMode.
            ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);

    try {
          URL url = new URL("http://www.vogella.com");
          HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
          readStream(con.getInputStream());
        } catch (Exception e) {
          e.printStackTrace();
           }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

你能更具体一点吗?

我觉得你已经在检索数据了。

你的代码应该失败,因为你正在UI线程中做网络工作。

答案 1 :(得分:0)

是的,当然,你需要遵循一些规则。

  1. 请不要在UI线程中使用网络线程
  2. 使用AsyncTask进行下载相关工作
  3. 可在此处找到一个工作示例:Getting info from api using JSON

    请参阅上面的帖子,将数据从服务器下载到您的设备。这个工作示例对你来说是一个好的开始。