0

以下代码来自我的第一个互联网应用程序。我没有测试它,因为我没有可用的 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();
           }
        }
    }
}
4

2 回答 2

0

你能再具体一点吗?

在我看来,您已经在检索数据了。

您的代码应该会失败,因为您正在 UI 线程中执行网络操作。

于 2012-09-13T10:18:36.643 回答
0

是的,当然,您需要遵守一些规则。

  1. 请不要在 UI 线程中使用网络线程
  2. 用于AsyncTask下载相关作品

可以在此处找到一个工作示例:使用 JSON 从 api 获取信息

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

于 2012-09-13T10:22:09.303 回答