一:网络请求与转字节(HttpURLConnection中的get与post请求两种)
public class UrlConnection {
//post请求
public static String postUrlConnect(String urlPath, Map<String, Object> map) {
StringBuffer sbRequest = new StringBuffer();
if (map != null && map.size() > 0) {
for (String key : map.keySet()) {
sbRequest.append(key + "=" + map.get(key) + "&");
}
}
String request = sbRequest.substring(0, sbRequest.length() - 1);
System.out.println(request);
try {
URL url = new URL(urlPath);
HttpURLConnection httpurl = (HttpURLConnection) url.openConnection();
httpurl.setRequestMethod("POST");
//设置连接主机超时
httpurl.setConnectTimeout(30000);
//设置从主机读取数据超时
httpurl.setReadTimeout(30000);
httpurl.setDoInput(true);
httpurl.setDoOutput(true);
//读取数据
OutputStream os = httpurl.getOutputStream();
os.write(request.getBytes());
//刷新
os.flush();
//判断返回值是否正确
if (httpurl.getResponseCode() == 200) {
InputStream in = httpurl.getInputStream();
StringBuffer sb = new StringBuffer();
//创建字符数组
byte[] buff = new byte[1024];
int len = -1;
while ((len = in.read(buff)) != -1) {
sb.append(new String(buff, 0, len, "utf-8"));
}
//关闭流
in.close();
os.close();
httpurl.disconnect();
return sb.toString();
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
}
return urlPath;
}
//get请求
public static String getUrlConnect(String urlPath) {
try {
//获取地址
URL url = new URL(urlPath);
//通过URL对象.openConnection,强转为(HttpURLConnection),的到HttpURLConnection对象
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();//http.https
//实际就是对HttpURLConnection进行初始化设置,设置请求模式:setRequestMethod
httpURLConnection.setRequestMethod("GET");
//设置连接超时时间.setConnectTimeout,注意单位是毫秒.
httpURLConnection.setConnectTimeout(8000);
//设置读取的超时时间,setReadTimeout,注意单位是毫秒.
httpURLConnection.setReadTimeout(8000);
//获取http返回的状态码..getResponseCode();
int responseCode = httpURLConnection.getResponseCode();//200
System.out.println(responseCode);
//判断返回值
if (responseCode == 200) {
//获取服务器的返回的流,getInputStream();
InputStream in = httpURLConnection.getInputStream();
StringBuffer sb = new StringBuffer();
byte[] buff = new byte[1024];
int len = -1;
while ((len = in.read(buff)) != -1) {
sb.append(new String(buff, 0, len, "utf-8"));
}
in.close();
httpURLConnection.disconnect();
return sb.toString();
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
二:网络判断的工具类
/**
* 用户手机是否有网络,判断的工具类
*/
public class NetWorkUtils {
//判断网络是否连接
public static boolean isNetWorkAvailable(Context context) {
//网络连接管理器
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//网络信息
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null) {
return true;
}
return false;
}
//判断是否是wifi
public static boolean isWifi(Context context) {
//网络连接管理器
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//网络信息
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.getType() == connectivityManager.TYPE_WIFI) {
return true;
}
return false;
}
//判断是否是手机流量
public static boolean isMobile(Context context) {
//网络连接管理器
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//网络信息
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.getType() == connectivityManager.TYPE_MOBILE) {
return true;
}
return false;
}
}
这些工具类都是自己经过验证的,没有问题。无毒无害放心使用