您的位置:首页 > 理论基础 > 计算机网络

Android通过HttpURLConnection链接到网络,并获取网络数据

2016-03-28 17:42 519 查看
1.判断网络是否连接

private void networkIsconnected(String str){
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()){
new DownloadUrl(str).execute();
}else {
display.setText("网络没有链接上!");
}
}


2.创建一个任务类,实现网络下载后台执行

//创建一个任务类
private class DownloadUrl extends AsyncTask<Integer,Integer,String>{
private String str ;

public DownloadUrl(String url){
this.str = url;
}

@Override
protected String doInBackground(Integer... urls) {
try {
return downloadurl(str);
} catch (IOException e) {
return "网络地址错误!";
}
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
display.setText(s);
}
}


3.创建一个下载数据的函数

//根据url下载数据内容
private String downloadurl(String url) throws IOException {

InputStream is = null;
int len = 500;

URL myurl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) myurl.openConnection();
conn.setConnectTimeout(10000);
conn.setReadTimeout(15000);
conn.setDoInput(true);
conn.connect();
int response = conn.getResponseCode();
Log.d("DEBUG_TAG", "The response is: " + response);
is = conn.getInputStream();
String contengString = readIt(is,len);
return contengString;
}


4.读取输入流传过来的inputstream

public String readIt(InputStream stream, int len) throws IOException{
Reader reader = null;
reader = new InputStreamReader(stream, "UTF-8");
char[] buffer = new char[len];
reader.read(buffer);
return new String(buffer);
}


5.最后在oncreate中直接运行即可

networkIsconnected(urltext.getText().toString());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: