From 960d5237daa4ad52cf7aee792018fce4aba4afbc Mon Sep 17 00:00:00 2001 From: haotianmingyue <2421912570@qq.com> Date: Thu, 18 Sep 2025 11:00:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=8E=AF=E5=A2=83=E5=8F=82?= =?UTF-8?q?=E6=95=B0,=20=E5=85=B3=E9=97=ADhttps=20ssl=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 001测试海康api.py | 41 +++++++++--------- config/env.py | 16 +++---- util/__pycache__/haikang_util.cpython-310.pyc | Bin 9815 -> 0 bytes util/haikang_util.py | 10 +++-- 4 files changed, 35 insertions(+), 32 deletions(-) delete mode 100644 util/__pycache__/haikang_util.cpython-310.pyc diff --git a/001测试海康api.py b/001测试海康api.py index fd24344..628f42c 100644 --- a/001测试海康api.py +++ b/001测试海康api.py @@ -1,6 +1,7 @@ from util.haikang_util import HaikangUtil import asyncio import base64 +import json @@ -12,42 +13,42 @@ async def get_door_list_service(pageNo: int = 1, pageSize: int = 10): result = await HaikangUtil.get_door_list_v2(pageNo, pageSize) print(result) with open("get_door_list_service.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 查询门禁状态 async def get_door_status_service(door_index_codes): result = await HaikangUtil.get_door_status(door_index_codes) print(result) with open("get_door_status_service.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 门禁控制 async def door_do_control_service(door_index_codes, control_type): result = await HaikangUtil.door_do_control(door_index_codes, control_type) print(result) with open("door_do_control_service.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 查询门禁点事件 async def query_door_events_service(door_index_code,pageNo, pageSize, startTime, endTime): result = await HaikangUtil.query_door_events_v2(door_index_code, pageNo=pageNo, pageSize=pageSize ,startTime=startTime, endTime=endTime) print(result) with open("query_door_events_service.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 查看门禁点在线状态 async def door_online_status_service(door_index_codes): result = await HaikangUtil.door_online_status(door_index_codes) print(result) with open("door_online_status_service.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 按条件查询人脸分组, 很重要 async def get_face_group_service(): result = await HaikangUtil.get_face_group() print(result) with open("get_face_group_service.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 人脸分组1vN搜索 async def face_group_1vN_search_service(image_path): @@ -63,11 +64,11 @@ async def face_group_1vN_search_service(image_path): pageSize=10, searchNum=99, minSimilarity=50, - faceGroupIndexCodes=['5dc82633-a4cb-4107-b55e-f21bf952f9'] + faceGroupIndexCodes=['70cd3fcdcdb444a0b92e75ff66b549e6'] ) print(result) with open("face_group_1vN_search_service.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 人脸评分 async def face_picture_check(image_path): @@ -77,38 +78,38 @@ async def face_picture_check(image_path): encoded_image = base64.b64encode(image_data).decode('utf-8') - + # print(encoded_image) result = await HaikangUtil.face_picture_check( facePicBinaryData=encoded_image ) print(result) with open("face_picture_check.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) # 查询访客预约记录 async def query_visitor_record(): - result = await HaikangUtil.query_visitor_record() + result = await HaikangUtil.query_visitor_record(pageNo=1, pageSize = 10) print(result) with open("query_visitor_record.json", "w", encoding="utf-8") as f: - f.write(result[1]) + f.write(json.dumps(result[1])) if __name__ == '__main__': - # asyncio.run(get_door_list_service()) + #asyncio.run(get_door_list_service()) # print("*"*100) - # asyncio.run(get_door_status_service(['D01'])) + # asyncio.run(get_door_status_service(['d4a610b6554d4544bc35dd3138f128b0'])) # print("*"*100) # asyncio.run(door_do_control_service(['D01'], 1)) - # asyncio.run(query_door_events_service('D01',1,10,1640995200,1640995200)) + # asyncio.run(query_door_events_service('d4a610b6554d4544bc35dd3138f128b0',1,10,'20025-09-10T17:30:08+08:00','2004-09-15T17:30:08+08:00')) - # asyncio.run(get_face_group_service()) + #asyncio.run(get_face_group_service()) - # image_path = "75c03e462769c81b6a8513d90ff2a27d.jpg" - # asyncio.run(face_group_1vN_search_service(image_path)) - # asyncio.run(face_picture_check(image_path)) + image_path = "./a7b3c794281902041c9b823df7667ce7.jpg" + asyncio.run(face_group_1vN_search_service(image_path)) + #asyncio.run(face_picture_check(image_path)) # asyncio.run(query_visitor_record()) - asyncio.run(door_online_status_service(["xxxxxxxx"])) + #asyncio.run(door_online_status_service(["d4a610b6554d4544bc35dd3138f128b0"])) diff --git a/config/env.py b/config/env.py index 521fb8a..a80f487 100644 --- a/config/env.py +++ b/config/env.py @@ -15,15 +15,14 @@ class HaiKangSettings: """ 海康平台配置 """ - # HAIKANG_URL = 'http://localhost' - HAIKANG_URL = 'https://localhost' - # HAIKANG_PORT = 443 + HAIKANG_URL = 'https://192.168.89.230' + HAIKANG_PORT = 443 - HAIKANG_PORT = 9919 - HAIKANG_AK = '' - HAIKANG_SK = '' + HAIKANG_AK = '29862915' + HAIKANG_SK = '3QlsmcyadBqu4OpVoxsJ' HAIKANG_ACCESS_TOKEN_URL = '/api/v1/oauth/token' - HAIKANG_DOOR_STATES_URL = '/api/v1/door/states' + # HAIKANG_DOOR_STATES_URL = '/api/v1/door/states' + HAIKANG_DOOR_STATES_URL = '/api/acs/v1/door/states' HAIKANG_DOOR_DOCONTROL_URL = '/api/acs/v1/door/doControl' HAIKANG_DOOR_ENVENTS_URL = '/api/acs/v2/door/events' HAIKANG_DOOR_SEARCH = '/api/resource/v2/door/search' @@ -32,9 +31,8 @@ class HaiKangSettings: HAIKANG_PICTURE_CHECK_URL = '/api/frs/v1/face/picture/check' HAIKANG_FACECAPATURE_SEARCH = '/api/frs/v1/event/face_capture/search' HAIKANG_FACE_GROUP_URL = '/api/frs/v1/face/group' + HAIKANG_VISITOR_RECORD_SEARCH = '/api/visitor/v2/appointment/records' - - class GetConfig: diff --git a/util/__pycache__/haikang_util.cpython-310.pyc b/util/__pycache__/haikang_util.cpython-310.pyc deleted file mode 100644 index 21cad5b348d7bbc14c605edb2f3a5015ade5405a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9815 zcmc&)>2n+BdEX0*#mPf7b@+mu!-6g9vgO*W8=ImiiIxm1BxT1NwU`xlMMA>C?k;4D z1I|!~uUJm!yFT+=#;<(>aq4p9{cpA5L28qt;e1=oqC$I9X zET{r|imJ$-k}9#MPxav`WaO-0_471F%qUq!Rk8s!z{*l4m<_2RmiJ}C*@zlpc{vl! zHmOZ4@6R-6Thtbw+sWyQ9yrPAffIt-s`CR}JUE9nafvwZM0O1h?(KOgWsKPAd@e3H zimus)oz5DLLg{EeXP{ft!MvH(>|~`8RZ79kjA*7s%@NbcXmT$GBfdQcBt@{g@3t^nb}h3COpj3Pv@*;{XxF1|ZGH9kG{%b1={*`MD$RXX)@ z>D;f%uaB26y*~5dXQgweXRlr>|N1y;<}QuTTsRpUHZYJ_IUaHN1xxk zP_5~RWes~cuXn~sl49kzJ}Lj^Jf@%i?2XcU$72ud?Hd?;pr$vZrZX1X*T1K9w;k({ru+ZHB%nQ>qk3d?&_zfZcKmr($Lir(?&*;hYifqwY#C#GE$~tcg6)34^9gVWwKzb;r*#*-WZLcqP>|%Rn#oHYJux1Ts z(g##At8aB=BbUnShAQjnA;YpA`G95_k3H%H4m|d#+vLc)L0wD&Zb!`JUo<7;RIy;E zOdr)rhw|y1<137e7^X>b=18U7gJET34gA?4*{{lWgT`6a&(^p`@KpTA-}M532#nFcO21E=@n+Oah?W zn|eC;4{Lclt>yNQ90l*^JdElZN$)QJr_jnUD@lb7BS)RK1BG-(XLB2RWkvU3F6&7o zQbghlzEwtqD~UqP}3#~lEBaZ)E-2a5z${;z$6E042k8-_GzPq>!u`yrKcStDmMWHAbC7suW z(>}LtOfJfVNjy++LYm~B=LC$A@H-*8J$P<_+w9F`ZG4gE(U<35z^$VtE+*!P2yu}u zPxX77t@=s(<_mV*=lE!IUs6L|*3n$5JClZ_sD9JH-dVQVY-(xCNJ2kj+p%F5*c8GT z_nWIQ?P6cA$|-ja#Wbvue9ki1zPd>agPgEsfH%B1>_?5&j6@i36(l~$hrhzkNSpp^ zbX6_wYlozOz153^h)B%HdjJ_C?;#!vf}X-f4ykyNdq*1Mi`)eCf05Tk)cJ7BlfE$l zwSKBC!ZMhYKvZ!THzpQEU0TiQzQcmqq02>aNEm?1ai4LeumdleJ#!6kN-||x;O)ak zZXU?{4Zugv>a3z2;UJT@WM_;BSZ%n?cRCWGc*2ng9~^$u;EuRrl46B=?&{s$mDrgC zpgZA8VQ*jmpt`D3>gw+985l?o_U-OTP(O1mjSNPNShtN z9mIyqsD*WbTDj(V)UeJsyRVl5NzjLl8{4jOtxY`bw# zD`addX6Iv@H&j`Kc&9?Hg@emi&tg0*4_FQjQ*7EWznVL8WKuV*l$mBLN><-%eixr< zZbmXUgI$UX<|9<`D3T9^+x&Xg{sFHBEd$7}*?H44A4FrqTu1%lNCq7V3PjuCh*@hW z9%fu^K18h#BT-jWxO978Uw?9-r>nnv7rJUMAxY=VZ=;Xn(+k-Vi*dENo@J0cu+SNHPi{q5tDT%Cg&c9@;$91k{f-pYE; z8|)hF8DQv1JZJs|C4{4m9OtRME^1=%`8~?PKljxCVhq+qaL7pGYS0Pvw#YmIfB6;S zt152^Vh|co`a`RK^zKGLt(n1TVug7IbC^kI<}*yiEDfm_@YZ9b>G&hO85lwo;4=Jm za1iNB(u%eEQe-;Og;nCeT37{Fd9YgHKZ4c3LRbxOHNd+4Yk~EjvA}s|IeWT%=KcQz z!!48F2v5lls?dvJD!8=#$6- zLanTBdg^rPrFFst_UuG2U7=1*s@US*I9 zpxuT(u4RrzlBe=@;;bxg!GR zP4cyv*|M|>sgWy3(qJPlTd>-gJMF3xMkWi^%75UE)+Qv-CV}Q)GkLJMpJ zTIG(yy{)rh>U`V9rgnl%!!UJRCxUer%qw{Jk|OxWSuk*pnFWK0r|t(EcOvvBlbOy8 z^C0qQK?-|@8Rp@HYqBP27wYYYB{q41T~LpgeThB2iJs&D%!7RcU$d{CX~5pST&Qei z@{`YH(mBKPuVX+oi&O;mQ$XC}s|B{_eYKXs!U^UmEIXH?gv82eIjE(Kz3J4pbWSsm zBHpDzRt(Kd4JQg&CjvWrAe~KTG&5};F+=hB6(&NGa~4jvHoHZQDSn($&3vl`dcw$pF(suM8+#) z0$&^??r3#jnE`B!i`m58| zPnE`RmQKA@I(KHh8{C_@`4+r3L~^U)(5muZzQ) zxl8ygH~hT7{d?kx`q}Dsdhr=QI*aJ=^v#>4>+jXOl3N>Awg{WJ#@7#_0RFPhxpiHL z+Wn}XI)Njg{|7%cE}H{j$9ZjG4pMO+CC^b(j|a6rYAxz70ED#_1FCE9-aWnDU4y-S ziDX}*XRz%xD+Hni%Ho zXrKZ0*VdxPqO<);puW*r?Szyw7uAz;=EkCCUdpfIdtI)Yy?PRY{*8p&V@rtmg_98R z*;^M&uYC+jDxbbGbK~sntyj0PIKC_D5dAu7ugdB-j;%1J_=b$Ry26-yd%Fks_4g#Z zclC7dUIs&Yii*8^xqR2kIAsJe6`YDBQ^Q8;aGIE|-DSE6+}K9*qE1aM9A4+7QVbB& zxj|eRnPWUVNEQm0Q7E5!z5LE3Y|$!|l>X)?2q2VR`;}{>u8);39525;QM&T(%$bjB zz+_>FqG~0^*16$WSgVUizX*gqJMwG$CRjWPE+30W^y{zk^x4ca1jQW1Osd% z0!$(qT}&zw0-zS8if4cYJOhj(HcMDsZe+VA2H0NV;~ibyJ;|N@ef#z@CSFT()Cc^` z4OG`a)M%AF3>ME59laoRBTKGXl&Wl49U&|BEpsuC--(cLA*<0jxR}-G9Nfu8qH|PR ziO%^NY}?1b&bBQ)j4yK~VD`$b(v{0|mru@Ie{c56N2O2C-wFKw1X1UT0YlFtX)BG; z@BlkKT4;8--!j8ui}i*9BH({K!hS<=y|==Y&-D)U4k9+)-_zaKzugN_FV7R$L(IBd zfc1Pkk61VyOTn#upLp4W*eDKM8u@t<53YU!M3R`3O^yIOX_nth%lbYg{YVn=c1KAj zb8w53Nhg?0X7hR>L-}wL$G2L>Yw;)HccxGsN@X<5a!;Jyqb3n1AHw|54J;~ek~8Xv zIO8y%rkq3=XLciN?xf^dO8O{yo{}F>@&Y9)B|oHOUcy-}Ms;+A+Jf8qDAo7q;XM8>uz{VCv*UfWozB+TA$HyWn@oZqHHhdL{@b*{$Q^M5 i5wxhqDB~zkx_kCLaEp6zp>PUc`Gt8Ld%HiORr+7_Yf8@m diff --git a/util/haikang_util.py b/util/haikang_util.py index c806956..6ebc7af 100644 --- a/util/haikang_util.py +++ b/util/haikang_util.py @@ -91,7 +91,10 @@ class HaikangUtil: # 发送请求 @classmethod async def send_request(cls, method: str, url: str, headers: dict, body: str | None): - async with httpx.AsyncClient() as client: + + + + async with httpx.AsyncClient(verify=False) as client: response = await client.request( method, url, headers=headers, content=body, timeout=60 ) @@ -137,6 +140,7 @@ class HaikangUtil: _type_: _description_ """ url = f"{HaiKangConfig.HAIKANG_URL}:{HaiKangConfig.HAIKANG_PORT}/artemis{HaiKangConfig.HAIKANG_DOOR_SEARCH}" + body_dict = { "pageNo": max(pageNo, 1), "pageSize": min(pageSize, 999), @@ -407,10 +411,10 @@ class HaikangUtil: url = f"{HaiKangConfig.HAIKANG_URL}:{HaiKangConfig.HAIKANG_PORT}/artemis{HaiKangConfig.HAIKANG_FACE_GROUP_URL}" headers = cls.build_signed_headers( - "POST", url, None, HaiKangConfig.HAIKANG_AK, HaiKangConfig.HAIKANG_SK + "POST", url, json.dumps({}), HaiKangConfig.HAIKANG_AK, HaiKangConfig.HAIKANG_SK ) - back = await cls.send_request("POST", url, headers, None) + back = await cls.send_request("POST", url, headers, json.dumps({})) if back["code"] == "0": # logger.info(f"按条件查询人脸成功")