读取网络数据首先需要添加访问权限添加位置是在androidmanifest.xml,添加的代码是:
该操作能够使android程序获得访问网络的权限。在android中,如果执行了网络请求,相应代码是不能出现在主线程中的,否则会报错。
<uses-permission android:name="android.permission.INTERNET" />
public class MainActivity extends Activity {
private TextView lzz;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lzz = (TextView)findViewById(R.id.url);
lzz.setText("请稍等...");
new AsyncTask<Void,Void,String>(){//该处是将访问网络的代码放在辅线程中
protected String doInBackground(Void... params){//因为返回的是字符串,所以是String
try {
InputStream in = new URL("http://sougou.com").openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"utf-8"));
String line = null;
StringBuffer content = new StringBuffer();
while((line = reader.readLine())!= null){
content.append(line);
}
in.close();
return content.toString();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String s){//该函数是在其他执行完毕后会执行该函数。
super.onPostExecute(s);
if(s!=null)
{
lzz.setText(s); }
}
}.execute();
}