工作后一直用各种网络框架,都快把基础知识忘了,抽点时间复习一下基础类的用法。
HttpsUrlConnection android网络请求类 当然还有HttpUrlConnection对应http请求,下面以百度首页为例进行请求
写一个GET请求工具类
public class NetUtlis {
public static String SendUrlRequest(String s){
try {
URL url = new URL(s);//将传入的String对象解析为url(统一资源定位符)
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
//通过url的openConnection()方法打开一个网络连接对象并强转为HttpsUrlConnection对象
//然后将httpsUrlConnection指向它
httpsURLConnection.setReadTimeout(5000);
//设置连接超时时间5000即5000毫秒=5秒钟
httpsURLConnection.setRequestMethod("GET");
//设置请求方法 GET
InputStream inputStream=httpsURLConnection.getInputStream();
//获得httpsUrlConnection的输入流对象
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
//将输入流对象包装为字符缓冲输入流
StringBuffer stringBuffer = new StringBuffer();
//创建一个StringBuffer对象用于接收每次获取到的输入流信息,当然这里是间接通过下面的String对象来拼接
String singleLineData = null;
while ((singleLineData = bufferedReader.readLine())!=null) {
//字符串singleLineData即每次从输入流中获取到的数据,当某一次获取为空时证明读取完毕,跳出循环
stringBuffer.append(singleLineData);
//不为空时,不断拼接stringBuffer
}
return stringBuffer.toString();
//最后将调用toString()方法返回完整数据字符串
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
在Activity中仅放置一个button用于开始请求
public class MainActivity extends AppCompatActivity {
private SendUrlTask sendUrlTask;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendUrlTask= new SendUrlTask("https://www.baidu.com");
sendUrlTask.execute();
}
});
}
private class SendUrlTask extends AsyncTask {
//网络请求多为耗时操作,在这用异步类进行操作,完成后自动销毁防止内存溢出
String url;
public SendUrlTask(String url) {
super();
this.url = url;
}
@Override
protected String doInBackground(Void... voids) {
return NetUrlis.SendUrlRequest(url);
//调用工具类发起网络请求
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
sendUrlTask.cancel(true);
//执行完成后toast结果,并销毁
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (sendUrlTask != null) {
sendUrlTask.cancel(true);
}
}
}
作者:kaida.yu