package com.example.saierclient.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
@SuppressWarnings("all")
public class MyHttpClientUtils {
private static Logger logger = LoggerFactory.getLogger(MyHttpClientUtils.class);
private static String JSON = "application/json; charset=utf-8";
//private static String MEDIA_TYPE_JSON= "application/x-www-form-urlencoded; charset=utf-8";
/**使用volatile双重校验锁**/
private static volatile Semaphore semaphore = null;
private static volatile OkHttpClient okHttpClient = null;
/**建立单例模式*/
public static Semaphore getSemaphoreInstance(){
//只能0个线程同时访问
synchronized (MyHttpClientUtils.class) {
if (semaphore == null) {
semaphore = new Semaphore(0);
}
}
return semaphore;
}
/**建立单例模式*/
public static OkHttpClient getInstance(){
synchronized (MyHttpClientUtils.class) {
if (okHttpClient == null) {
//这里是以毫秒为单位,1000 毫秒 = 1秒
okHttpClient = new OkHttpClient().newBuilder()
.connectTimeout(5000, TimeUnit.SECONDS)// 设置超时时间
.readTimeout(5000, TimeUnit.SECONDS)// 设置读取超时时间
.writeTimeout(5000, TimeUnit.SECONDS)// 设置写入超时时间
.build();
}
}
return okHttpClient;
}
/**
* @Description 求在子线程发起网络请求
* @param url 请求url地址
* @param params 请求body参数
* @param okHttpClientCall 回调接口
* @throws IOException 参数
* @return void 返回类型
*/
public static void createAsycHttpGet(String url,Map<String,Object> params,String contentType,final IOkHttpClientCallBack okHttpClientCall) {
// 创建请求对象
Call call = createCall(url, params);
//发起异步的请求
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response!=null && response.isSuccessful()) {
String string = response.body().string();
okHttpClientCall.onSuccessful(string);
}
}
@Override
public void onFailure(Call call, IOException e) {
String errorLog = getCurrentClassName()+"#createHttpGet,请求异常,异常信息为:"+e.getMessage();
logger.error("@see "+errorLog);
}
});
}
/**
* @Description 求在子线程发起网络请求
* @param url 请求url地址
* @param params 请求body参数
* @param okHttpClientCall 回调接口
* @throws IOException 参数
* @return void 返回类型
*/
public static String createAsycHttpGet(String url,Map<String,Object> params,String contentType) {
final StringBuilder buffer = new StringBuilder("");
try {
// 创建请求对象
Call call = createCall(url, params);
//发起异步的请求
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response!=null && response.isSuccessful()) {
String string = response.body().string();
buffer.append(string);
getSemaphoreInstance().release();
}
}
@Override
public void onFailure(Call call, IOException e) {
String errorLog = getCurrentClassName()+"#createHttpGet,请求异常,异常信息为:"+e.getMessage();
logger.error("@see "+errorLog);
}
});
getSemaphoreInstance().acquire();//获取许可
return buffer.toString();
} catch (InterruptedException e) {
e.printStackTrace();
}
return buffer.toString();
}
/**
* @Description 求在子线程发起网络请求
* @param url 请求url地址
* @param params 请求body参数
* @param okHttpClientCall 回调接口
* @throws IOException 参数
* @return void 返回类型
*/
public static String createHttpGet(String url,Map<String,Object> params,String contentType) {
try {
// 创建请求对象
Call call = createCall(url, params);
Response response = call.execute();
// if (response!=null && response.isSuccessful() && ObjectUtil.isNotEmpty(response.body())) {
if (response!=null && response.isSuccessful()) {
//Collection<String> readLines = IOUtil.readLines(byteStream);
//System.out.println(readLines);
return convertToString(response.body().byteStream());
}
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* @Description convertStreamToString
* @param is
* @return 参数
* @return String 返回类型
* @throws
*/
public static String convertToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder buffer = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
buffer.append(line + "\r");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return buffer.toString();
}
/**
* @Description convertStr
* @param is
* @return
* @throws IOException 参数
* @return String 返回类型
* @throws
*/
public static String convertStr(InputStream is) throws IOException {
OutputStream baos = new ByteArrayOutputStream();
int i = -1;
while ((i = is.read()) != -1) {
baos.write(i);
}
return baos.toString();
}
/**
* @Description 创建异步表单Body参数的post请求处理
* @param url 请求链接
* @param params 请求表单body参数
* @param okHttpClientCall 参数 回调接口
* @return void 返回类型
*/
public static void createPostByAsynWithForm(String url,Map<String,Object> params,final IOkHttpClientCallBack okHttpClientCall) {
FormBody.Builder builder = new FormBody.Builder();
for (String key : params.keySet()) {
builder.add(key, params.get(key).toString
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于IPv6的智能机器人园区异常情况监测系统源码(包括无线传感器网络、智能巡检机器人、监控数据服务器、主服务器端和监测客户端APP五个子系统。其中,无线传感器网络是以树莓派为核心的基于ZigBee的传感器平台,及海康威视网络摄像头)(智能巡检机器人以Jetson TX2为核心).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于IPv6的智能机器人园区异常情况监测系统源码(包括无线传感器网络、智能巡检机器人、监控数据服务器、主服务器端和监测客户端APP五个子系统。其中,无线传感器网络是以树莓派为核心的基于ZigBee的传感器平台,及海康威视网络摄像头)(智能巡检机器人以Jetson TX2为核心).zip (74个子文件)
code_20105
saiernetserver
srnserver
src
test
java
saiernet
server
srnserver
SrnserverApplicationTests.java 220B
main
resources
mapper
sensormapper.xml 3KB
usersmapper.xml 1KB
application.properties 542B
java
utils
SysUtil.java 1KB
saiernet
server
srnserver
ServletInitializer.java 418B
controller
pushreqcontroller.java 2KB
TestController.java 642B
pullreqcontroller.java 2KB
initcontroller.java 3KB
dao
sensordao.java 788B
userdao.java 593B
SrnserverApplication.java 417B
service
sensorservice.java 2KB
userservice.java 1006B
entity
RespPack.java 1KB
sensorlastvalues.java 2KB
recordlist.java 1KB
devices.java 1KB
ReqPack.java 476B
users.java 699B
UserVO.java 555B
ReqPack2.java 471B
SensorVO.java 996B
saiernetapp
app
src
main
java
com
example
saierclient
data
ExchangeRepository.java 2KB
ExchangeDataSource.java 3KB
Result.java 1KB
LoginRepository.java 2KB
model
ReqVO.java 314B
CameraVO.java 1KB
ResponseVO.java 548B
LoggedInUser.java 521B
UserVO.java 557B
SensorAllVO.java 1KB
LoginDataSource.java 4KB
utils
MyHttpClientUtils.java 21KB
MyUtils.java 355B
ui
wlsensornetview
WLSensorNetViewModelFactory.java 809B
WLSensorNetViewModel.java 1KB
WLSensorNetResult.java 811B
WLSensorNetActivity.java 5KB
common
MyImageView.java 12KB
MyImageListAdapter.java 2KB
robotview
RobotResult.java 781B
RobotViewModel.java 1KB
RobotActivity.java 5KB
RobotViewModelFactory.java 785B
login
LoginActivity.java 6KB
LoginViewModelFactory.java 904B
LoginViewModel.java 3KB
LoggedInUserView.java 386B
LoginResult.java 828B
LoginFormState.java 933B
summaryview
SummaryResult.java 791B
SummaryViewModelFactory.java 793B
SummaryViewModel.java 1KB
SummaryActivity.java 6KB
AndroidManifest.xml 1KB
saiernetbot
vesc.rar 35KB
racecar.rar 65KB
racebot.rar 840KB
racebot_teleop.rar 4KB
razor_imu_9dof.rar 58KB
zed-ros-wrapper.rar 12.12MB
rplidar_ros.rar 618KB
saiernetsurvserver
FireDetect.py 2KB
AppMain.py 4KB
ImgUtils.py 5KB
Pic_str.py 496B
SendUtils.py 499B
saiernetdevice
dcs_device.rar 7KB
raspberrypi.rar 10KB
dcs_server.rar 2KB
dcs_client.rar 6KB
共 74 条
- 1
资源评论
土豆片片
- 粉丝: 1528
- 资源: 5641
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功