get请求
1.在AndroidManifest.xml 添加网络使用的权限INTERNET,网络请求不是危险权限,配置完就可以使用了
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
2.注意:onCreate是主线程,从上到下依次读取并执行,主线程不可以做耗时操作,处理办法:开一个线程重写run方法,在里面写耗时操作。
1)new url(填请求的网址)
URL u =new URL(“https://www.baidu.com/”);
会报错用try catch
2)开启连接,强转换HttpsURLConnection
HttpsURLConnection huc =(HttpsURLConnection) u .openConnection();
3)设置请求方法是GET(注:字母全要大写)
huc.setRequestMethod(“GET”);
4)填标题头
huc .addRequestProperty(对应value值"content-type",*对应键值"*application/json要是text就直接/text: 编码形式 charset=utf-8");
【可以设置超时时间huc.setConnectTimeout(3000);3秒后没数据返回就说明有问题,也可以不设置】
5)连接
huc.connect();
6)返回输入流
InputStream inputStream =huc .getInputStream();
7)对输入流解析
//创建字节流
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//创建byte数组每次都往数组里装数据
byte[] byt=new byte[1024];
//设置inputStream 每次读的长度,用length记录
int length=0;
//对输入流inputStream解析,-1表示没有数据
while((length=inputStream.read(byt)) != -1){
//从第0个开始读,到length结束
baos.write(byt,0,length);
}
//数据通过inputStream 读到ByteArrayOutputStream里,就将baos转换成string类型
String str =new String(baos.toByteArray());
Log.i("shit",str);
在MainActivity.java中
new Thread(){
@Override
public void run() {
try {
URL u =new URL("https://www.baidu.com/");
HttpsURLConnection huc =(HttpsURLConnection) u.openConnection();
huc.setRequestMethod("GET");
huc.addRequestProperty("content-type","application/json:charset=utf-8");
huc.connect();
InputStream inputStream =huc.getInputStream();
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte[] byt=new byte[1024];
int length=0