專案有用到呼叫海康的第三方api,具體介面是分頁獲取監控點的資訊串列
我使用的是海康提供的openAPI 開發包里的示例代碼,附代碼(ip,appkey,appSecret我就不貼了)
public class ArtemisPostTest {
/**
* 請根據自己的appKey和appSecret更換static靜態塊中的三個引數. [1 host]
* 如果你選擇的是和現場環境對接,host要修改為現場環境的ip,https埠默認為443,http埠默認為80.例如10.33.25.22:443 或者10.33.25.22:80
* appKey和appSecret請按斬訓得到的appKey和appSecret更改.
* TODO 呼叫前先要清楚介面傳入的是什么,是傳入json就用doPostStringArtemis方法,下載圖片doPostStringImgArtemis方法
*/
static {
ArtemisConfig.host = "xxx";// 代理API網關nginx服務器ip埠
ArtemisConfig.appKey = "xxxx";// 秘鑰appkey
ArtemisConfig.appSecret = "xxxxx";// 秘鑰appSecret
}
/**
* 能力開放平臺的網站路徑
* TODO 路徑不用修改,就是/artemis
*/
private static final String ARTEMIS_PATH = "/artemis";
/**
* 呼叫POST請求型別(application/json)介面,這里以入侵報警事件日志為例
* https://open.hikvision.com/docs/918519baf9904844a2b608e558b21bb6#e6798840
*
* @return
*/
public static String callPostStringApi(){
/**
* http://10.33.47.50/artemis/api/scpms/v1/eventLogs/searches
* 根據API檔案可以看出來,這是一個POST請求的Rest介面,而且傳入的引數值為一個json
* ArtemisHttpUtil工具類提供了doPostStringArtemis這個函式,一共六個引數在檔案里寫明其中的意思,因為介面是https,
* 所以第一個引數path是一個hashmap型別,請put一個key-value,query為傳入的引數,body為傳入的json資料
* 傳入的contentType為application/json,accept不指定為null
* header沒有額外引數可不傳,指定為null
*
*/
final String getCamsApi = ARTEMIS_PATH +"/api/resource/v1/cameras";
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", getCamsApi);//根據現場環境部署確認是http還是https
}
};
JSONObject jsonBody = new JSONObject();
jsonBody.put("pageNo", 1);
jsonBody.put("pageSize", 3);
String body = jsonBody.toJSONString();
String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post請求application/json型別引數
return result;
}
我自測建了main方法 呼叫時我列印了報錯資訊是

不知道有哪位大佬呼叫過海康的api ,求幫助解答
uj5u.com熱心網友回復:
你這不就是404了 人家回傳碼就給你的明明白白 所以 一定是 你的路徑不對uj5u.com熱心網友回復:
仔細對一下你的getCamsApi,是不是哪里寫錯了uj5u.com熱心網友回復:
檢查一下你的IP地址和調動介面吧uj5u.com熱心網友回復:
doPostStringArtemis方法是怎么實作的,有代碼嗎?不會是直接使用path引數這個map的value發送了而忘了拼接domain或者IP吧?uj5u.com熱心網友回復:
你好,我也是這個問題,請問你解決了嗎uj5u.com熱心網友回復:
應該是 ArtemisConfig.host 填錯了,或者, previewURLsApi 填錯了。previewURLsApi 填錯的可能性比較大。、
把 final String getCamsApi = ARTEMIS_PATH +"/api/resource/v1/cameras";
替換成 final String getCamsApi = ARTEMIS_PATH +"/api/scpms/v1/eventLogs/searches";
或者 final String getCamsApi = ARTEMIS_PATH +"/api/scpms/v2/eventLogs/searches";
應該就可以了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/11216.html
標籤:Java EE
