海康威视产品的token更新

Posted 码海兴辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了海康威视产品的token更新相关的知识,希望对你有一定的参考价值。


//组装参数
Map<String, String> loginToCameraTokenMap = new HashMap<>();
loginToCameraTokenMap.put("appKey", hkCameraTokenInfoSelectDTO.getAppKey());
loginToCameraTokenMap.put("appSecret", hkCameraTokenInfoSelectDTO.getSecret());
HkCameraTokenDTO hkCameraTokenDTO = HttpDongQingUtil.doPostForm("https://open.ys7.com/api/lapp/token/get", loginToCameraTokenMap);
import com.alibaba.fastjson.JSON;
import com.dongqing.storage.core.dto.business.hk.HkCameraTokenDTO;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
* @author lrx
* @description: TODO HTTP客户端工具类,支持get,post
* @date 2021/3/9 13:50
*/
public class HttpDongQingUtil

/**
* 向指定URL发送GET方法的请求
*
* @param httpurl 请求参数用?拼接在url后边,请求参数应该是 name1=value1&name2=value2 的形式。
* @return result 所代表远程资源的响应结果
*/
public static String doGet(String httpurl)
HttpURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
try
// 创建远程url连接对象
URL url = new URL(httpurl);
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
connection = (HttpURLConnection) url.openConnection();
// 设置连接方式:get
connection.setRequestMethod("GET");
// 设置连接主机服务器的超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间:60000毫秒
connection.setReadTimeout(60000);
// 发送请求
connection.connect();
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200)
is = connection.getInputStream();
// 封装输入流is,并指定字符集
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null)
sbf.append(temp);
sbf.append("\\r\\n");

result = sbf.toString();

catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
finally
// 关闭资源
if (null != br)
try
br.close();
catch (IOException e)
e.printStackTrace();



if (null != is)
try
is.close();
catch (IOException e)
e.printStackTrace();



connection.disconnect();// 关闭远程连接


return result;


/**
* 向指定 URL 发送POST方法的请求
*
* @param httpUrl 发送请求的 URL
* @param param 请求参数应该是"key":"==g43sEvsUcbcunFv3mHkIzlHO4iiUIT R7WwXuSVKTK0yugJnZSlr6qNbxsL8OqCUAFyCDCoRKQ882m6cTTi0q9uCJsq JJvxS+8mZVRP/7lWfEVt8/N9mKplUA68SWJEPSXyz4MDeFam766KEyvqZ99d"的形式。
* @return 所代表远程资源的响应结果
*/
public static List<String> doPost(String httpUrl, String param)

HttpURLConnection connection = null;
InputStream is = null;
OutputStream os = null;
BufferedReader br = null;
List<String> list = new ArrayList<>();
try
URL url = new URL(httpUrl);
// 通过远程url连接对象打开连接
connection = (HttpURLConnection) url.openConnection();
// 设置连接请求方式
connection.setRequestMethod("POST");
// 设置连接主机服务器超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取主机服务器返回数据超时时间:60000毫秒
connection.setReadTimeout(60000);

// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
connection.setDoOutput(true);
// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
connection.setDoInput(true);
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
connection.setRequestProperty("Content-Type", "application/json");
// 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
//connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
// 通过连接对象获取一个输出流
os = connection.getOutputStream();
// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
os.write(param.getBytes());
// 通过连接对象获取一个输入流,向远程读取
if (connection.getResponseCode() == 200)

is = connection.getInputStream();
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

StringBuffer sbf = new StringBuffer();
String temp = null;
// 循环遍历一行一行读取数据
while ((temp = br.readLine()) != null)
list.add(temp);


catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
finally
// 关闭资源
if (null != br)
try
br.close();
catch (IOException e)
e.printStackTrace();


if (null != os)
try
os.close();
catch (IOException e)
e.printStackTrace();


if (null != is)
try
is.close();
catch (IOException e)
e.printStackTrace();


// 断开与远程地址url的连接
connection.disconnect();

return list;


/**
* @param httpUrl 请求的url
* @param param form表单的参数(key,value形式)
* @return
*/
public static HkCameraTokenDTO doPostForm(String httpUrl, Map param)

HttpURLConnection connection = null;
InputStream is = null;
OutputStream os = null;
BufferedReader br = null;
//创建登录地址,验证信息对象
HkCameraTokenDTO hkCameraTokenDTO = new HkCameraTokenDTO();
try
URL url = new URL(httpUrl);
// 通过远程url连接对象打开连接
connection = (HttpURLConnection) url.openConnection();
// 设置连接请求方式
connection.setRequestMethod("POST");
// 设置连接主机服务器超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取主机服务器返回数据超时时间:60000毫秒
connection.setReadTimeout(60000);

// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
connection.setDoOutput(true);
// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
connection.setDoInput(true);
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
//connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
// 通过连接对象获取一个输出流
os = connection.getOutputStream();
// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的(form表单形式的参数实质也是key,value值的拼接,类似于get请求参数的拼接)
os.write(createLinkString(param).getBytes());
// 通过连接对象获取一个输入流,向远程读取
if (connection.getResponseCode() == 200)

is = connection.getInputStream();
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

StringBuffer sbf = new StringBuffer();
String temp = br.readLine();
hkCameraTokenDTO = JSON.parseObject(temp,HkCameraTokenDTO.class);


catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
finally
// 关闭资源
if (null != br)
try
br.close();
catch (IOException e)
e.printStackTrace();


if (null != os)
try
os.close();
catch (IOException e)
e.printStackTrace();


if (null != is)
try
is.close();
catch (IOException e)
e.printStackTrace();


// 断开与远程地址url的连接
connection.disconnect();

return hkCameraTokenDTO;


/**
* 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
*
* @param params 需要排序并参与字符拼接的参数组
* @return 拼接后字符串
*/
public static String createLinkString(Map<String, String> params)
//所有的键转化成list
List<String> keys = new ArrayList<String>(params.keySet());
Collections.sort(keys);
//返回的拼接
StringBuilder prestr = new StringBuilder();
//遍历键
for (int i = 0; i < keys.size(); i++)
//获取键
String key = keys.get(i);
//获取值
String value = params.get(key);
if (i == keys.size() - 1) // 拼接时,不包括最后一个&字符
prestr.append(key).append("=").append(value);
else
prestr.append(key).append("=").append(value).append("&");


//返回
return prestr.toString();

以上是关于海康威视产品的token更新的主要内容,如果未能解决你的问题,请参考以下文章

海康威视门禁怎么设置?

海康威视面试——产品销售岗和研发岗

SRS4 对接海康威视GB28181协议推流 RTMP、webRTC拉流

海康威视实习(持续更新)

海康威视SDK

海康linux 断电后 服务中断了