package com.example.news;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
//请求网络需要使用INTERNET权限
//<uses-permission android:name="android.permission.INTERNET" />
//判断网络类型需要使用ACCESS_NETWORK_STATE权限
// <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
public class Uilts {
//判断网络是否有效
public static boolean isNetwork(Context context){
//获取连接管理服务
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//得到连接状态
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
//不为空且以有效
return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable();
}
//判断是否是手机网络
public static boolean isMobileNetwork (Context context){
//获取连接管理服务
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//得到连接状态
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
//返回是否是手机网络
return activeNetworkInfo.getType()==ConnectivityManager.TYPE_MOBILE;
}
//定义请求网络数据方法
public static InputStream queryNetworkData(String s,Context context){
String string ="";
try {
//得到网络路径
URL url = new URL(s);
//打开网络连接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//设置请求方式
urlConnection.setRequestMethod("GET");
//查看是否是手机网络,如果是适当延长加载时间
boolean mobileNetwork = isMobileNetwork(context);
int times;
if(mobileNetwork){
times=10000;
}else{
times=5000;
}
//读取超时
urlConnection.setReadTimeout(times);
//网络连接请求超时
urlConnection.setConnectTimeout(times);
//得到连接返回码,胖多是否请求成功
int responseCode = urlConnection.getResponseCode();
//判断请求码类型进行不同操作
switch (responseCode){
case 200:
//请求成功,得到网络数据,解析数据得到集合
return urlConnection.getInputStream();
}
} catch (java.io.IOException e) {
e.printStackTrace();
}
return null;
}
//将数据转化为字符串 ↓字节流
public static String getString (InputStream is) {
//字符流
InputStreamReader isr = new InputStreamReader(is);
//字符缓冲流
BufferedReader br = new BufferedReader(isr);
//创建一个可追加字符串用来接收数据
StringBuilder builder = new StringBuilder();
//循环得到所有数据
try {
for (String i = br.readLine();i!=null;i = br.readLine()){
builder.append(i);
}
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
//Gson 解析 泛型
public static <E>E queryNewsLiatData(String s,Class clazz){
E e = (E)new Gson().fromJson(s,clazz);
return e;
}
}