{"id":28493,"date":"2024-11-25T14:59:17","date_gmt":"2024-11-25T06:59:17","guid":{"rendered":"https:\/\/fwq.ai\/blog\/28493\/"},"modified":"2024-11-25T14:59:17","modified_gmt":"2024-11-25T06:59:17","slug":"%e5%be%ae%e4%bf%a1h5%e5%bc%80%e5%8f%91-%e8%b0%83%e7%94%a8openapi","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/28493\/","title":{"rendered":"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi"},"content":{"rendered":"<p>&nbsp;\u5fae\u4fe1\u786c\u4ef6\u5e73\u53f0\u662f\u5fae\u4fe1\u63a8\u51fa\u8fde\u63a5\u7269\u4e0e\u4eba\uff0c\u7269\u4e0e\u7269\u7684iot\u89e3\u51b3\u65b9\u6848\u3002\u4e5f\u5c31\u662f\u8bf4\u53ef\u4ee5\u901a\u8fc7\u5fae\u4fe1\u63a7\u5236\u5404\u79cd\u667a\u80fd\u8bbe\u5907\u3002\u6bd4\u5982\u4e00\u4e9b\u84dd\u7259\u8bbe\u5907\u3001\u7a7a\u8c03\u3001\u7535\u89c6\u7b49\u7b49\u3002<\/p>\n<p>&nbsp;<img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/0ca83e894de44e273a17f67a8f2eb782-0.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe\" \/><\/p>\n<p>\u6211\u672c\u8eab\u4e0d\u61c2\u786c\u4ef6(\u867d\u7136\u662f\u7535\u5b50\u4fe1\u606f\u4e13\u4e1a)\uff0c\u786c\u4ef6\u662f\u5317\u822a\u7684\u4e24\u4e2a\u7814\u7a76\u751f\u5728\u5f04\uff0c\u5c0f\u56e2\u961f\u91cc\u6211\u8d1f\u8d23\u5f00\u53d1H5\u81ea\u5b9a\u4e49\u9762\u677f\uff0c\u521a\u5f00\u59cb\u770b\u5b98\u65b9\u6587\u6863\u5404\u79cd\u8ff7\u7cca\uff0c\u5bf9\u4e8esdk\u3001js\u3001Airkiss\u3001openApi\u3001\u76f4\u8fdeSDK\u90fd\u4e0d\u77e5\u9053\u8be5\u7528\u54ea\u4e2a\u505a\uff0c\u5b98\u65b9\u8bba\u575b\u95ee\u95ee\u9898\u57fa\u672c\u4e0a\u6ca1\u7ed3\u679c\uff0c\u52a0\u4e86\u51e0\u4e2a\u5fae\u4fe1\u786c\u4ef6\u7fa4\u95ee\u95ee\u9898\uff0c\u53d1\u73b0\u597d\u4e9b\u5f00\u53d1\u8005\u548c\u6211\u4e00\u6837\uff0c\u540c\u4e00\u4e2a\u95ee\u9898\uff0c\u53d1\u5230\u51e0\u4e2a\u7fa4\u91cc\u95ee\uff0c\u753b\u9762\u597d\u5fc3\u9178\u3002\u7ed9wxthings\u53d1\u90ae\u4ef6\u95ee\uff0c\u80fd\u56de\u590d\u5c31\u4e0d\u9519\u4e86\uff0c\u5f80\u5f80\u8fd8\u662f\u53ea\u8a00\u7247\u8bed\u3002\u5410\u69fd\u4e86\u8fd9\u4e48\u591a\uff0c\u8fd8\u662f\u5f97\u53bb\u89e3\u51b3\u95ee\u9898\uff0c\u6bd5\u7adf\u8bbe\u5907\u80fd\u642d\u4e0a\u5fae\u4fe1\u662f\u4e00\u5927\u5356\u70b9\uff0c\u6700\u8fd1\u6478\u7d22\u51fa\u6765\u4e00\u4e9b\u4e1c\u897f\uff0c\u4e8e\u662f\u6709\u4e86\u6b64\u6587\u3002<\/p>\n<h2>&nbsp;\u4e00\u3001\u63a5\u5165\u6d41\u7a0b<\/h2>\n<p>&nbsp;<img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/420d3ef42a94312cf3f9ed1b0e29cf16-1.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe1\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe1\" \/><\/p>\n<p>&nbsp;\u4e5f\u5c31\u662f\u8bf4\uff0c\u9996\u5148\u4f60\u5f97\u6709\u4e00\u4e2a\u516c\u4f17\u53f7\uff0c\u7136\u540e\u5f00\u901a\u8bbe\u5907\u529f\u80fd\u3001\u6dfb\u52a0\u4ea7\u54c1(\u4e5f\u5c31\u662f\u4f60\u7684\u667a\u80fd\u8bbe\u5907)\u3002\u8fd9\u4e9b\u8fc7\u7a0b\u5b98\u65b9\u6587\u6863\u6bd4\u8f83\u6e05\u695a\uff0c\u6211\u5c31\u4e0d\u8bb2\u4e86\u3002\u63a5\u5165\u65b9\u6848\u6211\u4eec\u9009\u62e9\u7684\u662f\u5fae\u4fe1\u786c\u4ef6\u4e91\u6807\u51c6\u63a5\u5165\u65b9\u6848\u3002<\/p>\n<h3>\u8bbe\u7f6e\u9762\u677f<\/h3>\n<p>\u800c\u6211\u8981\u8bf4\u7684H5\u9762\u677f\u5f00\u53d1\uff0c\u6307\u7684\u5c31\u662f\u5728\u5fae\u4fe1\u4e2d\u6253\u5f00\u7684\u4e00\u4e2aH5\u63a7\u5236\u9875\u9762\uff0c\u5b83\u5982\u4f55\u548c\u5fae\u4fe1\u786c\u4ef6\u4e91\u901a\u4fe1\uff0c\u5982\u4f55\u8bfb\u53d6\u548c\u8bbe\u7f6e\u8bbe\u5907\u7684\u3002\u5728\u6dfb\u52a0\u4ea7\u54c1\u7684\u8fc7\u7a0b\u4e2d\u6709\u4e00\u680f\u8bbe\u7f6e\u9762\u677f<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/420d3ef42a94312cf3f9ed1b0e29cf16-2.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe2\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe2\" \/><\/p>\n<p>\u5982\u679c\u9009\u62e9\u6807\u51c6\u9762\u677f\uff0c\u5fae\u4fe1\u5b98\u65b9\u7ed9\u51fa\u4e86\u4e09\u7c7b\u6807\u51c6\u9762\u677f\uff1a<\/p>\n<p>&nbsp;<img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/420d3ef42a94312cf3f9ed1b0e29cf16-3.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe3\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe3\" \/><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/46832232831c11cf0039e2e15354bddf-4.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe4\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe4\" \/><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/46832232831c11cf0039e2e15354bddf-5.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe5\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe5\" \/><\/p>\n<p>&nbsp;\u5206\u522b\u662f\u7a7a\u8c03\u3001\u5f00\u5173\u548c\u706f\uff0c\u5982\u679c\u662f\u81ea\u5b9a\u4e49\uff0c\u5219\u8f93\u5165\u5730\u5740\u5373\u53ef\u3002\u5982\u679c\u662f\u6807\u51c6\u9762\u677f\uff0c\u4f60\u662f\u4e0d\u9700\u8981\u670d\u52a1\u5668\uff0c\u4f46\u5982\u679c\u662f\u81ea\u5b9a\u4e49\u7684\u9762\u677f\uff0c<strong>\u4f60\u5c31\u9700\u8981\u6709\u81ea\u5df1\u7684\u670d\u52a1\u5668\uff0c\u4e0d\u7136\u4f60\u65e0\u6cd5\u5904\u7406\u5fae\u4fe1\u4e91\u53d1\u8fc7\u6765\u7684\u6d88\u606f<\/strong>\u3002<\/p>\n<h3>\u542f\u7528\u670d\u52a1\u5668\u914d\u7f6e<\/h3>\n<p>\u5728\u8bbe\u7f6e\u670d\u52a1\u5668\u5730\u5740\u7684\u65f6\u5019\u8981\u6ce8\u610f\uff0c\u4f60\u5fc5\u987b\u6309\u7167\u5b83\u8981\u6c42\u65b9\u5f0f\u5904\u7406\u54cd\u5e94\u4e86\uff0c\u4f60\u624d\u80fd\u542f\u7528\u6210\u529f\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/46832232831c11cf0039e2e15354bddf-6.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe6\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe6\" \/><\/p>\n<p>&nbsp;\u4f60\u70b9\u51fb\u542f\u7528\u7684\u65f6\u5019\uff0c\u5fae\u4fe1\u4e91\u4f1a\u53d1\u8fc7\u6765\u4e00\u4e2a\u7b7e\u540d\u3001\u4e00\u4e2a\u3001\u4e00\u4e2a\u968f\u673a\u6570\u548c\u4e00\u4e2a\u968f\u673a\uff0c<strong>\u9a8c\u8bc1\u4e4b\u540e\uff0c\u8fd4\u56de\u90a3\u4e2a\u968f\u673a\u5b57\u7b26\u4e32<\/strong>\uff0c\u5fae\u4fe1\u4e91\u6536\u5230\u4f60\u8fd4\u56de\u7684\u968f\u673a\u5b57\u7b26\u4e32\u4e86\uff0c\u5c31\u80fd\u542f\u7528\u6210\u529f\u3002\u6bd4\u5982\uff0c\u5982\u679c\u4f60\u5b9a\u4e49\u7684\u5730\u5740\u662fhttp:\/\/www.xxx.com\/device\/ReceiveWXMsg,\u90a3\u4e48\u5148\u628a\u4ee3\u7801\u670d\u52a1\u5668\uff0c\u7136\u540e\u518d\u70b9\u51fb\u542f\u7528\uff0c\u5fae\u4fe1\u4e91\u4f1a\u5411\u8fd9\u4e2a\u5730\u5740post\u6570\u636e\u3002<strong> \u6bcf\u4e00\u6b21\u5fae\u4fe1\u5411\u670d\u52a1\u5668\u53d1\u9001\u6570\u636e\u65f6\uff0c\u90fd\u4f1a\u5148\u53d1\u8fd9\u9a8c\u8bc1(\u4e5f\u5c31\u662f\u8bf4\u5982\u679c\u4e0d\u6821\u9a8c\u5c31\u8fd4\u56de\u4f1a\u6709\u95ee\u9898)<\/strong>\u3002<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-7.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-8.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" \/><\/p>\n<p><\/p>\n<pre>  public string ReceiveWXMsg()\r\n        {            var signature = Request.QueryString[\"signature\"];            var timestamp = Request.QueryString[\"timestamp\"];            var echostr = Request.QueryString[\"echostr\"];            var nonce = Request.QueryString[\"nonce\"];\r\n            Logger.Debug(\"signature:\" + signature);\r\n            Logger.Debug(\"timestamp:\" + timestamp);\r\n            Logger.Debug(\"nonce:\" + nonce);\r\n            Logger.Debug(\"echostr:\" + echostr);            \/\/\u9a8c\u8bc1 \r\n            return echostr;\r\n        }<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span>View Code<\/span><\/p>\n<p>\u76f4\u63a5\u8fd4\u56de\u5c31\u884c\uff0c\u4e0d\u8981\u52a0\u4e2a\u4ec0\u4e48\u7684\u3002\u8fd9\u4e2a\u5730\u5740\u662f\u5e72\u561b\u7684\u5462\uff0c\u5f80\u4e0b\u770b\u3002<\/p>\n<h2>\u4e8c\u3001\u901a\u4fe1\u65b9\u5f0f<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-9.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe9\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe9\" \/><\/p>\n<p>Wifi\u8bbe\u5907\u548c\u84dd\u7259\u8bbe\u5907\u662f\u4e0d\u540c\u7684\uff0c\u84dd\u7259\u4f7f\u7528Airsync\u534f\u8bae\u548c\u5fae\u4fe1\u901a\u4fe1\uff0c\u800cwifi\u8bbe\u5907\u7684\u8bdd\uff0c\u6211\u4eec\u5728\u81ea\u5df1\u7684\u670d\u52a1\u5668\u4e0a\u8c03\u7528\u5fae\u4fe1\u63d0\u4f9b\u7684openApi\u83b7\u53d6\u6216\u8bbe\u7f6e\u8bbe\u5907\u72b6\u6001\uff0c\u5fae\u4fe1\u670d\u52a1\u5668\u5c31\u4f1a\u628a\u6570\u636e\u4ee5json\u683c\u5f0fpost\u5230\u6211\u4eec\u4e0a\u9762\u8bbe\u7f6e\u7684\u90a3\u4e2a\u5730\u5740\u3002\u786c\u4ef6\u65b9\u9762wifi\u8bbe\u5907\u53ef\u4ee5\u4f7f\u7528\u5fae\u4fe1\u63d0\u4f9b\u7684\u76f4\u8fdeSDK\u6765\u63a7\u5236\u8bbe\u5907\u3002<\/p>\n<p>\u6dfb\u52a0\u5b8c\u8bbe\u5907\uff0c\u8bbe\u7f6e\u597d\u670d\u52a1\u5668\uff0c\u4f60\u8fd8\u9700\u8981\u786c\u4ef6\u7684\u540c\u5b66\u6253\u5f00\u8bbe\u5907\uff0c\u5e2e\u5b9a\u4f60\u7684\u5fae\u4fe1\u3002\u4ece\u5fae\u4fe1\u7684\u8bbe\u7f6e&#8211;&gt;\u8bbe\u5907&#8211;&gt;\u9009\u62e9\u8bbe\u5907&#8211;&gt;\u6253\u5f00\u9762\u677f\u3002\u4f60\u5c31\u53ef\u4ee5\u770b\u5230\u8bbe\u5907\u5e76\u8fdb\u884c\u63a7\u5236\u4e86\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-10.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe10\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe10\" \/><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/0c3d5a406d0d814bb33fe99e3decca8a-11.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe11\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe11\" \/><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/0c3d5a406d0d814bb33fe99e3decca8a-12.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe12\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe12\" \/><\/p>\n<h2>\u4e09\u3001\u8c03\u7528openApi<\/h2>\n<p>\u8bf4\u4e86\u8fd9\u4e48\u591a\u524d\u63d0\u5de5\u4f5c\uff0c\u7ec8\u4e8e\u8fdb\u5165\u8c03\u7528api\u73af\u8282\u3002\u53ef\u4ee5\u5148\u770b\u4e00\u4e0bopenApi\u7684\u5b98\u65b9\u6587\u6863\uff1aiot.weixin.qq.com\/wiki\/doc\/hardwarecloud\/openapi.pdf<\/p>\n<p>\u6587\u6863\u91cc\u9762\u4e3b\u8981\u8bb2\u4e86\u4e09\u4e2a\u65b9\u6cd5\uff0c\u4e00\u4e2a\u662f\u8bbe\u5907\u72b6\u6001\uff0c\u4e00\u4e2a\u662f\u8bbe\u7f6e\u8bbe\u5907\u72b6\u6001\uff0c\u4e00\u4e2a\u662f\u63a5\u53d7\u8bbe\u5907\u72b6\u6001\u53d8\u5316\u7684\u6d88\u606f\uff0c\u7136\u540e\u662f\u4e00\u4e9b\u7b49\u3002\u4f46\u89c2\u5bdfapi\u5c31\u4f1a\u53d1\u73b0\u6211\u4eec\u8fd8\u9700\u8981\u4e24\u4e2a\u91cd\u8981\u7684\u53c2\u6570\uff0c\u4e00\u4e2a\u662faccess_token\uff0c\u4e00\u4e2a\u662f\u7528\u6237\u7684openid\u3002\u8fd8\u8bf4\u660e\u4e00\u70b9\uff0c\u7f51\u9875\u662f \u3002<\/p>\n<h3>1.\u83b7\u53d6access_token<\/h3>\n<p>\u5b98\u65b9\u6709\u4e00\u4e2a\u9875\u9762\uff1amp.weixin.qq.com\/debug\/&nbsp;\uff0c\u83b7\u53d6access_token\u9700\u8981appid\u548csecret\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/0c3d5a406d0d814bb33fe99e3decca8a-13.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe13\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe13\" \/><\/p>\n<p>\u800c\u8fd9\u4e24\u4e2a\u503c\uff0c\u662f\u5728\u516c\u4f17\u53f7\u540e\u53f0\u7684\u57fa\u672c\u914d\u7f6e\u4e2d\u67e5\u770b\uff0csecret\u662f\u4e2a\u5f88\u91cd\u8981\u7684\u53c2\u6570\uff0c\u6240\u4ee5\u8bf7\u4fdd\u5bc6\u597d\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/cd4ff512e9adb5d1b3da2a2cf9cf334e-14.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe14\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe14\" \/><\/p>\n<p>\u67e5\u770b\u5bc6\u94a5\u8fd8\u9700\u8981\u626b\u4e8c\u7ef4\u7801\u5f97\u5230\u7ba1\u7406\u5458\u7684\u786e\u8ba4&#8230; &nbsp;\u62ff\u5230\u8fd9\u4e24\u4e2a\u53c2\u6570\u4e86\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u751f\u6210token\u4e86\u3002\u6ce8\u610f\u8fd4\u56de\u7684json\u662f\u4e00\u4e2atoken\u5b57\u7b26\u4e32\u518d\u52a0\u4e00\u4e2a\u8d85\u65f6\u65f6\u95f4\u3002\u5b9a\u4e49\u4e00\u4e2aTokenResult\uff1a<\/p>\n<pre>public&nbsp;class&nbsp;TokenResult\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;access_token&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;expires_in&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8981\u6ce8\u610f\u7684\u4e00\u70b9\u662f\uff0c<strong>token\u4e24\u5c0f\u65f6\u540e\u4f1a\u8fc7\u671f<\/strong>\u3002\u6240\u4ee5\u5728\u6211\u4eec\u7684\u4ee3\u7801\u91cc\u9762\u9700\u8981\u68c0\u67e5\u662f\u5426\u8d85\u65f6\uff0c\u7136\u540e\u81ea\u52a8\u91cd\u65b0\u83b7\u53d6\u3002<\/p>\n<pre>&nbsp;public&nbsp;const&nbsp;string&nbsp;AccessTokenUrl&nbsp;=&nbsp;\"https:\/\/api.weixin.qq.com\/cgi-bin\/token?grant_type=client_credential&amp;amp;appid={0}&amp;amp;secret={1}\";<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>&nbsp;getAccessToken\u65b9\u6cd5\u5b9a\u4e49\u5728\u4e00\u4e2a\u670d\u52a1\u7c7b\u4e2d\uff0c\u6bd4\u5982WxDeviceService<\/p>\n<pre>using&nbsp;SendHelp=&nbsp;Senparc.Weixin.CommonAPIs.CommonJsonSend;public&nbsp;TokenResult&nbsp;GetAccessToken()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;string.Format(WxDeviceConfig.AccessTokenUrl,&nbsp;WxDeviceConfig.AppId,&nbsp;WxDeviceConfig.APPSECRET);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;res&nbsp;=&nbsp;SendHelp.Send&lt;tokenresult&gt;(null,&nbsp;url,&nbsp;null,&nbsp;CommonJsonSendType.GET);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;res;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;\/tokenresult&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4f7f\u7528Senparc.Weixin\u5c01\u88c5\u597d\u7684api\u6765\u5904\u7406\u8bf7\u6c42\u3002<\/p>\n<h3>2.\u83b7\u53d6openid<\/h3>\n<p>\u8fd9\u4e2a\u53c2\u6570\u5728\u67e5\u8be2\u548c\u8bbe\u7f6e\u8bbe\u5907\u72b6\u6001\u7684\u65f6\u5019\u4f1a\u7528\u5230\uff0c\u5bf9\u5e94user\u53c2\u6570\u540d\u3002\u83b7\u53d6openid\u9700\u8981\u4e09\u4e2a\u53c2\u6570\uff0caccess_token\u5df2\u7ecf\u6709\u4e86\uff0c\u7136\u540e\u9700\u8981device_type\u548cdevice_id<\/p>\n<pre>&nbsp;public&nbsp;const&nbsp;string&nbsp;GetOpenid&nbsp;=\"https:\/\/api.weixin.qq.com\/device\/get_openid?access_token={0}&amp;amp;device_type={1}&amp;amp;device_id={2}\";<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u800ctype\u548cid\u662f\u524d\u7aef\u9875\u9762\u4f20\u8fc7\u6765\u7684\uff0c\u5f53\u7528\u6237\u5fae\u4fe1\u4e2d\u6253\u5f00\u63a7\u5236\u9762\u677f\u7684\u65f6\u5019\uff0c\u5fae\u4fe1\u4f1a\u81ea\u52a8\u5c06\u8fd9\u4e24\u4e2a\u53c2\u6570\u8ffd\u52a0\u5230url\u540e\u9762\u3002\u800c\u8fd9\u4e2aurl\u7684\u8fd4\u56de\u503c\u7ed3\u6784\u662f\u8fd9\u6837\uff1a<\/p>\n<pre>{\"open_id\":[\"oxa1otw5sk-Azgd8mx1bmBqoM2_E\",\"oxa1ot8-j9j5bYUJJyAexe9d41_Y\",\"oxa1ot5QTdxn0xNQ0DmYzoN0tUp1\"],\"resp_msg\":{\"ret_code\":0,\"error_info\":\"ok\"}}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>openid\u90e8\u5206\u662f\u4e00\u4e2a\uff0c\u5b9e\u9645\u4f7f\u7528\u7684\u662f\u7b2c\u4e09\u4e2a(\u6211\u76ee\u524d\u4e5f\u4e0d\u77e5\u9053\u524d\u9762\u4e24\u4e2aid\u662f\u5e72\u5565\u7684)\uff0c\u5b9a\u4e49\u4e00\u4e2aopenidResult\uff1a<\/p>\n<pre>&nbsp;&nbsp;&nbsp;List&nbsp;List&nbsp;{&nbsp;&nbsp;_openId??(_openId=&nbsp;List&nbsp;{&nbsp;_openId&nbsp;=&nbsp;resp_msg&nbsp;resp_msg&nbsp;{&nbsp;;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>service\u4e2d\uff1a<\/p>\n<pre>&nbsp;&nbsp;public&nbsp;string&nbsp;GetOpenId(string&nbsp;accessToken,string&nbsp;deviceType,string&nbsp;deviceId)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;string.Format(WxDeviceConfig.GetOpenid,&nbsp;accessToken,&nbsp;deviceType,&nbsp;deviceId);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;res&nbsp;=&nbsp;SendHelp.Send&lt;openidresult&gt;(accessToken,&nbsp;url,&nbsp;null,&nbsp;CommonJsonSendType.GET);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;res.GetOpenId();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;\/openidresult&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u5982\u679c\u4f60\u7684devicetype\u548cdeviceId\u9519\u8bef\uff0c\u5fae\u4fe1\u4f1a\u8fd4\u56de\u4e00\u4e2a\u4e0d\u592a\u6070\u5f53\u7684\u9519\u8befjson\uff1a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/cd4ff512e9adb5d1b3da2a2cf9cf334e-15.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe15\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe15\" \/><\/p>\n<p>\u5bf9\u6bd4\u9519\u8bef\u4ee3\u7801\u5217\u8868\uff0c\u6211\u5f00\u59cb\u4ee5\u4e3a\u5fae\u4fe1\u670d\u52a1\u5668\u51fa\u9519\u4e86\u3002\u5176\u5b9e\u662f\u6211\u53c2\u6570\u586b\u9519\u4e86\u3002<\/p>\n<p>&nbsp;<img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/cd4ff512e9adb5d1b3da2a2cf9cf334e-16.png\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe16\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe16\" \/><\/p>\n<p>\u9047\u5230\u7684\u9519\u8bef\uff0c\u5c06\u4e0d\u6b62\u5b98\u65b9\u6587\u6863\u516c\u5e03\u7684\u8fd9\u51e0\u4e2a\u3002<\/p>\n<h3>3.\u67e5\u8be2\u8bbe\u5907\u72b6\u6001<\/h3>\n<p>\u67e5\u8be2\u8bbe\u5907\u548c\u4e0a\u9762\u7684\u8fd9\u4e24\u4e2a\u65b9\u6cd5\u7565\u6709\u4e0d\u540c\uff0c\u56e0\u4e3a\u6d41\u7a0b\u662f\u8fd9\u7684\uff0c\u6211\u4eec\u7684\u670d\u52a1\u5668\u5148\u50cf\u5411\u5fae\u4fe1\u670d\u52a1\u5668\u8bf7\u6c42\uff0c\u5fae\u4fe1\u63a5\u53d7\u5230\u8bf7\u6c42\u540e\u9a6c\u4e0a\u8fd4\u56de\u4e00\u4e2a\u786e\u8ba4json\uff0c\u7136\u540e\u5fae\u4fe1\u670d\u52a1\u5668\u4f1a\u9a6c\u4e0a\u628a\u6570\u636epost\u6211\u4eec\u524d\u9762\u8bbe\u7f6e\u7684\u90a3\u4e2a\u5730\u5740\u4e0a\u3002<\/p>\n<p>\u8bf7\u6c42url\uff1a<\/p>\n<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetDeviceStatusUrl=<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4ece\u5b98\u65b9\u6587\u6863\u53ef\u4ee5\u770b\u5230\uff0c\u67e5\u8be2\u8bbe\u5907\u8fd8\u9700\u8981\u53e6\u5916\u4e00\u4e2a\u91cd\u8981\u7684\u53c2\u6570\uff0c\u5b83\u5305\u542bdevice_type\u548cdevice_id,services,user,data\u3002<\/p>\n<p>&nbsp;<img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/cd4ff512e9adb5d1b3da2a2cf9cf334e-17.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe17\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe17\" \/><\/p>\n<p>\u9700\u8981\u8bf4\u660e\u4e00\u4e0b\u7684\u5c31\u662fservices\uff0c\u610f\u601d\u662f\u6307\u8bbe\u5907\u7684\u80fd\u529b\u9879\uff0c\u4e5f\u5c31\u662f\u4f60\u8981\u67e5\u8be2\u8bbe\u5907\u7684\u54ea\u4e9b\uff0c\u8fd9\u4e2a\u5728\u8bbe\u7f6e\u8bbe\u5907\u7684\u65f6\u5019\u4e00\u6837\u7528\u5230\u3002\u5b8c\u6210\u7684\u4ea7\u54c1\u80fd\u529b\u5b9a\u4e49\u8bf7\u770b\uff1ahttp:\/\/iot.weixin.qq.com\/wiki\/doc\/intro\/%E4%BA%A7%E5%93%81%E8%83%BD%E5%8A%9B%E5%AE%9A%E4%B9%89%E6%8C%87%E5%BC%95%20V1.2.pdf&nbsp;<\/p>\n<p>\u56e0\u6b64\u5b9a\u4e49\u4e00\u4e2aRequestData\u4ee5\u53ca\u8bbe\u5907\u5bf9\u5e94\u7684\u80fd\u529b\u9879<\/p>\n<pre>&nbsp;public&nbsp;class&nbsp;RequestData\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;device_type&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;device_id&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;user&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Service&nbsp;services&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;object&nbsp;data&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<pre>&nbsp;public&nbsp;class&nbsp;Service\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;lightbulb&nbsp;lightbulb&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;air_conditioner&nbsp;air_conditioner&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;power_switch&nbsp;power_switch&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;operation_status&nbsp;operation_status&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>service\u5305\u62ec\u4e24\u4e2a\u90e8\u5206\uff0c\u4e00\u4e2a\u662f\u80fd\u529b\u90e8\u5206\uff0c\u597d\u6bd4\u4e0a\u9762\u8fd9\u4e2aservice\uff0c\u5c31\u5305\u542b\u4e86\u4e09\u79cd\u80fd\u529b\uff0c\u706f\u3001\u7a7a\u8c03\u4ee5\u53ca\u5f00\u5173(\u8fd9\u53ea\u662f\u6d4b\u8bd5\uff0c\u4e0d\u662f\u771f\u6b63\u4ea7\u54c1\u7684\u80fd\u529b)\u3002\u548c\u4e00\u4e2a\u64cd\u4f5c\u72b6\u6001\u3002\u64cd\u4f5c\u72b6\u6001\u5c31\u662f\u6307\u8fd9\u4e2a\u8bbe\u5907\u662f\u5426\u5f00\u7740\u6216\u8005\u5173\u95ed\u4e86\u3002\u800c\u6bcf\u4e00\u4e2a\u80fd\u529b\uff0c\u53c8\u5305\u62ec\u4e24\u90e8\u5206\uff0c\u62ff\u706f\u6765\u8bf4\uff1a<\/p>\n<pre>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;lightbulb\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;alpha&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;lightbulb_value_range&nbsp;value_range&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;lightbulb_value_range\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;alpha&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u706f\u6709\u4e00\u4e2a\u4eae\u5ea6\u503c\uff0c\u548c\u4e00\u4e2a\u8303\u56f4\u5c5e\u6027\u3002\u8303\u56f4\u503c\u4e2d\u5305\u542b\u4e86\u6700\u5927\u548c\u6700\u5c0f\u503c\u4ee5\u53ca\u5355\u4f4d\u503c\u3002<\/p>\n<pre>\"lightbulb\":{\"alpha\":10,\"value_range\":{\"alpha\":\"0|100|1\"}},\"<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8fd9\u8868\u793a\u706f\u7684\u4eae\u5ea6\u662f10\uff0c\u8fd4\u56de\u662f0\u5230100\uff0c\u6bcf\u6b21\u53ef\u4ee5\u8c03\u82821\u4e2a\u5355\u4f4d\u3002<\/p>\n<p>\u53d1\u9001\u67e5\u8be2\u8bf7\u6c42\u540e\uff0c\u5fae\u4fe1\u8fd4\u56de\u4e00\u4e2ajson\uff0c\u5b9a\u4e49\u5bf9\u8c61\u4e3a\u4e0b\uff1a<\/p>\n<pre>&nbsp;public&nbsp;class&nbsp;OpenApiResult\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;error_code&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;error_msg&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;msg_id&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>&nbsp;WxDeviceService\u4e2d\uff1a<\/p>\n<pre>&nbsp;&nbsp;&nbsp;public&nbsp;OpenApiResult&nbsp;RequestDeviceStatus(string&nbsp;accessToken,&nbsp;RequestData&nbsp;data)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;string.Format(WxDeviceConfig.GetDeviceStatusUrl,&nbsp;accessToken);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;SendHelp.Send&lt;openapiresult&gt;(accessToken,&nbsp;url,&nbsp;data);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;\/openapiresult&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<h3>4.\u63a5\u53d7\u6d88\u606f<\/h3>\n<p>\u90a3\u4e48\u95ee\u9898\u6765\u4e86\uff0c\u5982\u4f55\u63a5\u53d7post\u8fc7\u6765\u7684\u6570\u636e\uff0c\u4ee5\u53ca\u5982\u4f55\u5b58\u50a8\u5462\u3002\u5fae\u4fe1post\u7684\u6570\u636e\u683c\u5f0f\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/3766f2b989f4a76e322b749f0e6243c4-18.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe18\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe18\" \/><\/p>\n<p>\u5b9a\u4e49\u4e86\u4e00\u4e2aWxResponseData\u5bf9\u8c61\uff1a<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-7.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-8.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" \/><\/p>\n<pre>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;WxResponseData\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;asy_error_code&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;asy_error_msg&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;create_time&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;msg_id&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;notify&nbsp;\u8bf4\u660e\u662f\u8bbe\u5907\u53d8\u66f4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;set_resp&nbsp;\u8bf4\u660e\u662f\u8bbe\u7f6e\u8bbe\u5907&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;get_resp&nbsp;\u8bf4\u660e\u83b7\u53d6\u8bbe\u5907\u4fe1\u606f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;msg_type&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;device_type&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;device_id&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;object&nbsp;data&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Service&nbsp;services&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;user&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span>View Code<\/span><\/p>\n<p>msg_type\u4ee3\u8868\u7740\u4e0d\u540c\u7c7b\u578b\u7684\u6d88\u606f\uff0c&nbsp;notify \u8bf4\u660e\u662f\u8bbe\u5907\u53d8\u66f4\uff0cset_resp \u8bf4\u660e\u662f\u8bbe\u7f6e\u8bbe\u5907&nbsp;get_resp \u8bf4\u660e\u83b7\u53d6\u8bbe\u5907\u4fe1\u606f\u3002\u5728WxDeviceService\u4e2d\u589e\u52a0GetDeviceStatus\u65b9\u6cd5\uff1a<\/p>\n<pre>&nbsp;&nbsp;&nbsp;public&nbsp;T&nbsp;GetWxResponse&lt;t&gt;(HttpRequestBase&nbsp;request)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stream&nbsp;postData&nbsp;=&nbsp;request.InputStream;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreamReader&nbsp;sRead&nbsp;=&nbsp;new&nbsp;StreamReader(postData);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;postContent&nbsp;=&nbsp;sRead.ReadToEnd();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!string.IsNullOrEmpty(postContent))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.Debug(\"\u6536\u5230\u6570\u636e:\"+postContent);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;JsonConvert.DeserializeObject&lt;t&gt;(postContent);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch&nbsp;(Exception&nbsp;e)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.Debug(e.Message);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WxResponseData&nbsp;GetDeviceStatus(HttpRequestBase&nbsp;request)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;GetWxResponse&lt;wxresponsedata&gt;(request);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;\/wxresponsedata&gt;&lt;\/t&gt;&lt;\/t&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u9700\u8981\u5148\u8bfb\u53d6\u8bf7\u6c42\u4e2d\u7684json\u5b57\u7b26\u4e32\u7136\u540e\u8f6c\u6362\u6210\u5bf9\u8c61\u3002\u7136\u540e\u5728\u6700\u521d\u542f\u7528\u7684ReceiveWXMsg\u65b9\u6cd5\u4e2d\u968f\u65f6\u51c6\u5907\u63a5\u53d7\u6d88\u606f\uff1a<\/p>\n<pre>&nbsp;&nbsp;public&nbsp;string&nbsp;ReceiveWXMsg()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;signature&nbsp;=&nbsp;Request.QueryString[\"signature\"];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;timestamp&nbsp;=&nbsp;Request.QueryString[\"timestamp\"];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;echostr&nbsp;=&nbsp;Request.QueryString[\"echostr\"];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;nonce&nbsp;=&nbsp;Request.QueryString[\"nonce\"];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.Debug(\"signature:\"&nbsp;+&nbsp;signature);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.Debug(\"timestamp:\"&nbsp;+&nbsp;timestamp);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.Debug(\"nonce:\"&nbsp;+&nbsp;nonce);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.Debug(\"echostr:\"&nbsp;+&nbsp;echostr);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;userdata&nbsp;=&nbsp;getUserWxData();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;data&nbsp;=&nbsp;wxDeviceService.GetDeviceStatus(Request);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userdata.ResponseData&nbsp;=&nbsp;data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setUserWxData(userdata);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch&nbsp;(Exception&nbsp;e)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.Debug(e.Message);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;echostr;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u56e0\u4e3a\u8bfb\u53d6\u5230\u7684\u6570\u636e\u9700\u8981\u53ca\u65f6\u5448\u73b0\u7ed9\u9875\u9762\uff0c\u6240\u4ee5\u8fd9\u91cc\u9009\u7528\u4e86\u6765\u5b58\u50a8\u8bbe\u5907\u4fe1\u606f\u4ee5\u53ca\u7528\u6237\u76f8\u5173\u4fe1\u606f\u3002<\/p>\n<p>UserWxData\uff1a<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-7.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-8.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" \/><\/p>\n<pre>public&nbsp;class&nbsp;UserWxData\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;WxResponseData&nbsp;_responseData;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;UserWxData()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateTime&nbsp;=&nbsp;DateTime.Now;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;DateTime&nbsp;CreateTime&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;TokenResult&nbsp;AccessToken&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WxResponseData&nbsp;ResponseData\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;_responseData??(_responseData=new&nbsp;WxResponseData());&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;_responseData&nbsp;=&nbsp;value;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;OpenId&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span>View Code<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-7.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-8.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" \/><\/p>\n<pre>&nbsp;&nbsp;private&nbsp;UserWxData&nbsp;getUserWxData()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;target&nbsp;=&nbsp;_cacheManager.Get&lt;userwxdata&gt;(userKey)&nbsp;??&nbsp;new&nbsp;UserWxData();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;target;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;userKey\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Session.SessionID;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;setUserWxData(UserWxData&nbsp;data)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_cacheManager.Set(userKey,&nbsp;data,&nbsp;7200);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;\/userwxdata&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span>View Code<\/span><\/p>\n<p>\u7f13\u5b58\u662fNop\u4e2d\u7684MemoryCacheManager\uff1a<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-7.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-8.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" \/><\/p>\n<pre>using&nbsp;System;using&nbsp;System.Collections.Generic;using&nbsp;System.Runtime.Caching;using&nbsp;System.Text.RegularExpressions;namespace&nbsp;Niqiu.Core.Domain.Common\r\n{&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Represents&nbsp;a&nbsp;manager&nbsp;for&nbsp;caching&nbsp;between&nbsp;HTTP&nbsp;requests&nbsp;(long&nbsp;term&nbsp;caching)&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;partial&nbsp;class&nbsp;MemoryCacheManager&nbsp;:&nbsp;ICacheManager\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;ObjectCache&nbsp;Cache\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MemoryCache.Default;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Gets&nbsp;or&nbsp;sets&nbsp;the&nbsp;value&nbsp;associated&nbsp;with&nbsp;the&nbsp;specified&nbsp;key.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;typeparam&gt;Type&lt;\/typeparam&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;The&nbsp;key&nbsp;of&nbsp;the&nbsp;value&nbsp;to&nbsp;get.\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;The&nbsp;value&nbsp;associated&nbsp;with&nbsp;the&nbsp;specified&nbsp;key.&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;T&nbsp;Get&lt;t&gt;(string&nbsp;key)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(T)Cache[key];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Adds&nbsp;the&nbsp;specified&nbsp;key&nbsp;and&nbsp;object&nbsp;to&nbsp;the&nbsp;cache.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;key\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;Data\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;Cache&nbsp;time\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;Set(string&nbsp;key,&nbsp;object&nbsp;data,&nbsp;int&nbsp;cacheTime)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(data&nbsp;==&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;policy&nbsp;=&nbsp;new&nbsp;CacheItemPolicy&nbsp;{AbsoluteExpiration&nbsp;=&nbsp;DateTime.Now&nbsp;+&nbsp;TimeSpan.FromMinutes(cacheTime)};\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cache.Add(new&nbsp;CacheItem(key,&nbsp;data),&nbsp;policy);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Gets&nbsp;a&nbsp;value&nbsp;indicating&nbsp;whether&nbsp;the&nbsp;value&nbsp;associated&nbsp;with&nbsp;the&nbsp;specified&nbsp;key&nbsp;is&nbsp;cached&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;key\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;Result&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;bool&nbsp;IsSet(string&nbsp;key)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(Cache.Contains(key));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Removes&nbsp;the&nbsp;value&nbsp;with&nbsp;the&nbsp;specified&nbsp;key&nbsp;from&nbsp;the&nbsp;cache&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\/key\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;Remove(string&nbsp;key)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cache.Remove(key);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Removes&nbsp;items&nbsp;by&nbsp;pattern&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;pattern\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;RemoveByPattern(string&nbsp;pattern)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;regex&nbsp;=&nbsp;new&nbsp;Regex(pattern,&nbsp;RegexOptions.Singleline&nbsp;|&nbsp;RegexOptions.Compiled&nbsp;|&nbsp;RegexOptions.IgnoreCase);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;keysToRemove&nbsp;=&nbsp;new&nbsp;List&lt;string&gt;();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;item&nbsp;in&nbsp;Cache)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(regex.IsMatch(item.Key))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keysToRemove.Add(item.Key);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(string&nbsp;key&nbsp;in&nbsp;keysToRemove)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove(key);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Clear&nbsp;all&nbsp;cache&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;Clear()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(var&nbsp;item&nbsp;in&nbsp;Cache)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove(item.Key);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}&lt;\/string&gt;&lt;\/t&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span>View Code<\/span><\/p>\n<p>\u800c\u4e3a\u4ec0\u4e48\u4e0d\u662fPerRequestCacheManager\u5462\uff0c\u60f3\u4e00\u60f3~<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-7.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-8.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" \/><\/p>\n<pre>using&nbsp;System;using&nbsp;System.Collections;using&nbsp;System.Collections.Generic;using&nbsp;System.Text.RegularExpressions;using&nbsp;System.Web;namespace&nbsp;Niqiu.Core.Domain.Common\r\n{&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Represents&nbsp;a&nbsp;manager&nbsp;for&nbsp;caching&nbsp;during&nbsp;an&nbsp;HTTP&nbsp;request&nbsp;(short&nbsp;term&nbsp;caching)&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;partial&nbsp;class&nbsp;PerRequestCacheManager&nbsp;:&nbsp;ICacheManager\r\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Ctor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;Context\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/public&nbsp;PerRequestCacheManager(HttpContextBase&nbsp;context)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;&nbsp;&nbsp;&nbsp;this._context&nbsp;=&nbsp;context;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Creates&nbsp;a&nbsp;new&nbsp;instance&nbsp;of&nbsp;the&nbsp;NopRequestCache&nbsp;class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;virtual&nbsp;IDictionary&nbsp;GetItems()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(_context&nbsp;!=&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;_context.Items;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u4e0d\u7528\u6ce8\u5165\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;HttpContextBase&nbsp;_context\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;new&nbsp;HttpContextWrapper(HttpContext.Current);&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Gets&nbsp;or&nbsp;sets&nbsp;the&nbsp;value&nbsp;associated&nbsp;with&nbsp;the&nbsp;specified&nbsp;key.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;typeparam&gt;Type&lt;\/typeparam&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;The&nbsp;key&nbsp;of&nbsp;the&nbsp;value&nbsp;to&nbsp;get.\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;The&nbsp;value&nbsp;associated&nbsp;with&nbsp;the&nbsp;specified&nbsp;key.&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;T&nbsp;Get&lt;t&gt;(string&nbsp;key)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;items&nbsp;=&nbsp;GetItems();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items&nbsp;==&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;default(T);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(T)items[key];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Adds&nbsp;the&nbsp;specified&nbsp;key&nbsp;and&nbsp;object&nbsp;to&nbsp;the&nbsp;cache.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;key\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;Data\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;Cache&nbsp;time\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;Set(string&nbsp;key,&nbsp;object&nbsp;data,&nbsp;int&nbsp;cacheTime)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;items&nbsp;=&nbsp;GetItems();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items&nbsp;==&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(data&nbsp;!=&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items.Contains(key))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items[key]&nbsp;=&nbsp;data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.Add(key,&nbsp;data);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Gets&nbsp;a&nbsp;value&nbsp;indicating&nbsp;whether&nbsp;the&nbsp;value&nbsp;associated&nbsp;with&nbsp;the&nbsp;specified&nbsp;key&nbsp;is&nbsp;cached&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;key\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;returns&gt;Result&lt;\/returns&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;bool&nbsp;IsSet(string&nbsp;key)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;items&nbsp;=&nbsp;GetItems();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items&nbsp;==&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(items[key]&nbsp;!=&nbsp;null);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Removes&nbsp;the&nbsp;value&nbsp;with&nbsp;the&nbsp;specified&nbsp;key&nbsp;from&nbsp;the&nbsp;cache&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;\/key\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;Remove(string&nbsp;key)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;items&nbsp;=&nbsp;GetItems();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items&nbsp;==&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.Remove(key);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Removes&nbsp;items&nbsp;by&nbsp;pattern&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;param&gt;pattern\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;RemoveByPattern(string&nbsp;pattern)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;items&nbsp;=&nbsp;GetItems();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items&nbsp;==&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;enumerator&nbsp;=&nbsp;items.GetEnumerator();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;regex&nbsp;=&nbsp;new&nbsp;Regex(pattern,&nbsp;RegexOptions.Singleline&nbsp;|&nbsp;RegexOptions.Compiled&nbsp;|&nbsp;RegexOptions.IgnoreCase);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;keysToRemove&nbsp;=&nbsp;new&nbsp;List&lt;string&gt;();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(enumerator.MoveNext())\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(regex.IsMatch(enumerator.Key.ToString()))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keysToRemove.Add(enumerator.Key.ToString());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(string&nbsp;key&nbsp;in&nbsp;keysToRemove)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.Remove(key);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;Clear&nbsp;all&nbsp;cache&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\/&nbsp;&lt;\/summary&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;virtual&nbsp;void&nbsp;Clear()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;items&nbsp;=&nbsp;GetItems();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(items&nbsp;==&nbsp;null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;enumerator&nbsp;=&nbsp;items.GetEnumerator();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;keysToRemove&nbsp;=&nbsp;new&nbsp;List&lt;string&gt;();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(enumerator.MoveNext())\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keysToRemove.Add(enumerator.Key.ToString());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(string&nbsp;key&nbsp;in&nbsp;keysToRemove)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.Remove(key);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}&lt;\/string&gt;&lt;\/string&gt;&lt;\/t&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span>View Code<\/span><\/p>\n<h3>5.\u8bbe\u7f6e\u8bbe\u5907\u72b6\u6001<\/h3>\n<p>\u6709\u4e86\u524d\u9762\u51e0\u6b65\uff0c\u8fd9\u91cc\u4e5f\u597d\u8bf4\u4e86\u3002url:<\/p>\n<pre>&nbsp;&nbsp;&nbsp;&nbsp;SetDeviceUrl&nbsp;=<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u8bbe\u7f6e\u8bbe\u5907\u7684\u53c2\u6570\u548c\u8bf7\u6c42\u662f\u4e00\u6837\u7684\uff0c<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-7.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe7\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/e9026c6b6c5fab5f625ece450d1de85c-8.gif\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe8\" \/><\/p>\n<pre>&nbsp;public&nbsp;OpenApiResult&nbsp;SetDevice(string&nbsp;accessToken,&nbsp;RequestData&nbsp;data)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;string.Format(WxDeviceConfig.SetDeviceUrl,&nbsp;accessToken);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;SendHelp.Send&lt;openapiresult&gt;(accessToken,&nbsp;url,&nbsp;data);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;\/openapiresult&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><span>View Code<\/span><\/p>\n<p>\u8c03\u7528openApi\u57fa\u672c\u4e0a\u5c31\u8fd9\u6837\u4e86\uff0c\u5982\u6709\u4e0d\u5b8c\u5584\u7684\u5730\u65b9\u8fd8\u8bf7\u6307\u6b63\u3002 \u8fd9\u4e2a\u65b9\u6cd5\u6709\u6743\u9650\u7684\u95ee\u9898\uff0c\u53ef\u4ee5\u7528\u67e5\u8be2\u65b9\u6cd5\u4ee3\u66ff\uff0c\u540c\u6837\u53ef\u4ee5\u6539\u53d8\u8bbe\u5907\u72b6\u6001\u3002\u4e0d\u77e5\u9053\u8fd9api\u662f\u4e2a\u4ec0\u4e48\u9b3c\u3002<\/p>\n<h2>\u56db\u3001 <\/h2>\n<p>&nbsp;<img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/f547d798a0c7fcd43ef30d03328e2ec8-31.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe19\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe19\" \/><\/p>\n<p>\u5982\u679c\u786c\u4ef6\u901a\u4fe1\u6ca1\u6709\u5f00\u542f\u8fd9\u4e2a\u80fd\u529b\uff0c\u53bb\u67e5\u8be2\u7684\u4f1a\u62a5\u8fd9\u4e2a\u9519\u8bef\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/f547d798a0c7fcd43ef30d03328e2ec8-32.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe20\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe20\" \/><\/p>\n<p>\u521a\u5f00\u59cb\u770b\u5230&#8221;device not login&#8221;\u5b9e\u5728\u6ca1\u660e\u767d\u4ec0\u4e48\u610f\u601d\uff0c\u6587\u6863\u91cc\u4e5f\u6ca1\u8bf4\u660e\u8fd9\u4e2a\u9519\u8bef\u3002\u8bbe\u5907\u8fd8\u9700\u8981\u4ec0\u4e48\u767b\u5f55\uff1f\u539f\u6765\u662f\u786c\u4ef6\u540c\u5b66\u6ca1\u6709\u8fde\u63a5\u8bbe\u5907&#8230; ORZ<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/f547d798a0c7fcd43ef30d03328e2ec8-33.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe21\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe21\" \/><\/p>\n<p>\u5982\u679c\u4f60\u7684requestData\u7ed3\u6784\u4e0d\u5bf9\uff0c\u7279\u522b\u662f\u9644\u52a0\u7684\u90a3\u4e2aData\u53c2\u6570\u53ea\u80fd\u662f\u5b57\u7b26\u4e32\uff0c\u4e0d\u8981\u5199\u6210\u7a7a\u5bf9\u8c61{}\uff0c\u5c31\u4f1a\u51fa\u73b0\u8fd9\u4e2a\u9519\u8bef\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/f192062ce92bbb043b06d8b30e501963-34.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe22\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe22\" \/><\/p>\n<p>token\u8d85\u65f6<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/001\/505\/f192062ce92bbb043b06d8b30e501963-35.png\" class=\"aligncenter\" title=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe23\" alt=\"\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u63d2\u56fe23\" \/><\/p>\n<p>\u540c\u4e00\u4e2a\u8bbe\u5907\u540c\u65f6\u88ab\u64cd\u4f5c\u3002<\/p>\n<p>\u3010\u76f8\u5173\u63a8\u8350\u3011<\/p>\n<p>1. <\/p>\n<p>2. <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5fae\u4fe1H5\u5f00\u53d1 \u8c03\u7528openApi\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;\u5fae\u4fe1\u786c\u4ef6\u5e73\u53f0\u662f\u5fae\u4fe1\u63a8\u51fa\u8fde\u63a5\u7269\u4e0e\u4eba\uff0c\u7269\u4e0e\u7269\u7684iot\u89e3\u51b3\u65b9\u6848\u3002\u4e5f\u5c31\u662f\u8bf4\u53ef\u4ee5\u901a\u8fc7\u5fae\u4fe1\u63a7\u5236\u5404\u79cd\u667a\u80fd\u8bbe\u5907\u3002\u6bd4\u5982\u4e00\u4e9b\u84dd\u7259\u8bbe\u5907\u3001\u7a7a\u8c03\u3001\u7535\u89c6\u7b49\u7b49\u3002 &nbsp; \u6211\u672c\u8eab\u4e0d\u61c2\u786c\u4ef6(\u867d\u7136\u662f\u7535\u5b50\u4fe1\u606f\u4e13\u4e1a)\uff0c\u786c\u4ef6\u662f\u5317\u822a\u7684\u4e24\u4e2a\u7814\u7a76\u751f\u5728\u5f04\uff0c\u5c0f\u56e2\u961f\u91cc\u6211\u8d1f\u8d23\u5f00\u53d1H5\u81ea\u5b9a\u4e49\u9762\u677f\uff0c\u521a\u5f00\u59cb\u770b\u5b98\u65b9\u6587\u6863\u5404\u79cd\u8ff7\u7cca\uff0c\u5bf9\u4e8esdk\u3001js\u3001Airkiss\u3001openApi\u3001\u76f4\u8fdeSDK\u90fd\u4e0d\u77e5\u9053\u8be5\u7528\u54ea\u4e2a\u505a\uff0c\u5b98\u65b9\u8bba\u575b\u95ee\u95ee\u9898\u57fa\u672c\u4e0a\u6ca1\u7ed3\u679c\uff0c\u52a0\u4e86\u51e0\u4e2a\u5fae\u4fe1\u786c\u4ef6\u7fa4\u95ee\u95ee\u9898\uff0c\u53d1\u73b0\u597d\u4e9b\u5f00\u53d1\u8005\u548c\u6211\u4e00\u6837\uff0c\u540c\u4e00\u4e2a\u95ee\u9898\uff0c\u53d1\u5230\u51e0\u4e2a\u7fa4\u91cc\u95ee\uff0c\u753b\u9762\u597d\u5fc3\u9178\u3002\u7ed9wxthings\u53d1\u90ae\u4ef6\u95ee\uff0c\u80fd\u56de\u590d\u5c31\u4e0d\u9519\u4e86\uff0c\u5f80\u5f80\u8fd8\u662f\u53ea\u8a00\u7247\u8bed\u3002\u5410\u69fd\u4e86\u8fd9\u4e48\u591a\uff0c\u8fd8\u662f\u5f97\u53bb\u89e3\u51b3\u95ee\u9898\uff0c\u6bd5\u7adf\u8bbe\u5907\u80fd\u642d\u4e0a\u5fae\u4fe1\u662f\u4e00\u5927\u5356\u70b9\uff0c\u6700\u8fd1\u6478\u7d22\u51fa\u6765\u4e00\u4e9b\u4e1c\u897f\uff0c\u4e8e\u662f\u6709\u4e86\u6b64\u6587\u3002 &nbsp;\u4e00\u3001\u63a5\u5165\u6d41\u7a0b &nbsp; &nbsp;\u4e5f\u5c31\u662f\u8bf4\uff0c\u9996\u5148\u4f60\u5f97\u6709\u4e00\u4e2a\u516c\u4f17\u53f7\uff0c\u7136\u540e\u5f00\u901a\u8bbe\u5907\u529f\u80fd\u3001\u6dfb\u52a0\u4ea7\u54c1(\u4e5f\u5c31\u662f\u4f60\u7684\u667a\u80fd\u8bbe\u5907)\u3002\u8fd9\u4e9b\u8fc7\u7a0b\u5b98\u65b9\u6587\u6863\u6bd4\u8f83\u6e05\u695a\uff0c\u6211\u5c31\u4e0d\u8bb2\u4e86\u3002\u63a5\u5165\u65b9\u6848\u6211\u4eec\u9009\u62e9\u7684\u662f\u5fae\u4fe1\u786c\u4ef6\u4e91\u6807\u51c6\u63a5\u5165\u65b9\u6848\u3002 \u8bbe\u7f6e\u9762\u677f \u800c\u6211\u8981\u8bf4\u7684H5\u9762\u677f\u5f00\u53d1\uff0c\u6307\u7684\u5c31\u662f\u5728\u5fae\u4fe1\u4e2d\u6253\u5f00\u7684\u4e00\u4e2aH5\u63a7\u5236\u9875\u9762\uff0c\u5b83\u5982\u4f55\u548c\u5fae\u4fe1\u786c\u4ef6\u4e91\u901a\u4fe1\uff0c\u5982\u4f55\u8bfb\u53d6\u548c\u8bbe\u7f6e\u8bbe\u5907\u7684\u3002\u5728\u6dfb\u52a0\u4ea7\u54c1\u7684\u8fc7\u7a0b\u4e2d\u6709\u4e00\u680f\u8bbe\u7f6e\u9762\u677f \u5982\u679c\u9009\u62e9\u6807\u51c6\u9762\u677f\uff0c\u5fae\u4fe1\u5b98\u65b9\u7ed9\u51fa\u4e86\u4e09\u7c7b\u6807\u51c6\u9762\u677f\uff1a &nbsp; &nbsp;\u5206\u522b\u662f\u7a7a\u8c03\u3001\u5f00\u5173\u548c\u706f\uff0c\u5982\u679c\u662f\u81ea\u5b9a\u4e49\uff0c\u5219\u8f93\u5165\u5730\u5740\u5373\u53ef\u3002\u5982\u679c\u662f\u6807\u51c6\u9762\u677f\uff0c\u4f60\u662f\u4e0d\u9700\u8981\u670d\u52a1\u5668\uff0c\u4f46\u5982\u679c\u662f\u81ea\u5b9a\u4e49\u7684\u9762\u677f\uff0c\u4f60\u5c31\u9700\u8981\u6709\u81ea\u5df1\u7684\u670d\u52a1\u5668\uff0c\u4e0d\u7136\u4f60\u65e0\u6cd5\u5904\u7406\u5fae\u4fe1\u4e91\u53d1\u8fc7\u6765\u7684\u6d88\u606f\u3002 \u542f\u7528\u670d\u52a1\u5668\u914d\u7f6e \u5728\u8bbe\u7f6e\u670d\u52a1\u5668\u5730\u5740\u7684\u65f6\u5019\u8981\u6ce8\u610f\uff0c\u4f60\u5fc5\u987b\u6309\u7167\u5b83\u8981\u6c42\u65b9\u5f0f\u5904\u7406\u54cd\u5e94\u4e86\uff0c\u4f60\u624d\u80fd\u542f\u7528\u6210\u529f\u3002 &nbsp;\u4f60\u70b9\u51fb\u542f\u7528\u7684\u65f6\u5019\uff0c\u5fae\u4fe1\u4e91\u4f1a\u53d1\u8fc7\u6765\u4e00\u4e2a\u7b7e\u540d\u3001\u4e00\u4e2a\u3001\u4e00\u4e2a\u968f\u673a\u6570\u548c\u4e00\u4e2a\u968f\u673a\uff0c\u9a8c\u8bc1\u4e4b\u540e\uff0c\u8fd4\u56de\u90a3\u4e2a\u968f\u673a\u5b57\u7b26\u4e32\uff0c\u5fae\u4fe1\u4e91\u6536\u5230\u4f60\u8fd4\u56de\u7684\u968f\u673a\u5b57\u7b26\u4e32\u4e86\uff0c\u5c31\u80fd\u542f\u7528\u6210\u529f\u3002\u6bd4\u5982\uff0c\u5982\u679c\u4f60\u5b9a\u4e49\u7684\u5730\u5740\u662fhttp:\/\/www.xxx.com\/device\/ReceiveWXMsg,\u90a3\u4e48\u5148\u628a\u4ee3\u7801\u670d\u52a1\u5668\uff0c\u7136\u540e\u518d\u70b9\u51fb\u542f\u7528\uff0c\u5fae\u4fe1\u4e91\u4f1a\u5411\u8fd9\u4e2a\u5730\u5740post\u6570\u636e\u3002 \u6bcf\u4e00\u6b21\u5fae\u4fe1\u5411\u670d\u52a1\u5668\u53d1\u9001\u6570\u636e\u65f6\uff0c\u90fd\u4f1a\u5148\u53d1\u8fd9\u9a8c\u8bc1(\u4e5f\u5c31\u662f\u8bf4\u5982\u679c\u4e0d\u6821\u9a8c\u5c31\u8fd4\u56de\u4f1a\u6709\u95ee\u9898)\u3002 public string ReceiveWXMsg() { var signature = Request.QueryString[&#8220;signature&#8221;]; var timestamp = Request.QueryString[&#8220;timestamp&#8221;]; var echostr = Request.QueryString[&#8220;echostr&#8221;]; var nonce = Request.QueryString[&#8220;nonce&#8221;]; Logger.Debug(&#8220;signature:&#8221; + signature); Logger.Debug(&#8220;timestamp:&#8221; + timestamp); Logger.Debug(&#8220;nonce:&#8221; + nonce); Logger.Debug(&#8220;echostr:&#8221; + echostr); \/\/\u9a8c\u8bc1 return echostr; } \u767b\u5f55\u540e\u590d\u5236 View Code \u76f4\u63a5\u8fd4\u56de\u5c31\u884c\uff0c\u4e0d\u8981\u52a0\u4e2a\u4ec0\u4e48\u7684\u3002\u8fd9\u4e2a\u5730\u5740\u662f\u5e72\u561b\u7684\u5462\uff0c\u5f80\u4e0b\u770b\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-28493","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=28493"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28493\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=28493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=28493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=28493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}