@@ -46,19 +46,27 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
4646 int nRVLen = 2048 ;
4747 XCHAR tszSDBuffer[2048 ] = {};
4848 XCHAR tszRVBuffer[2048 ] = {};
49- XCHAR tszAPIVersion[64 ];
50- XCHAR tszAPIMethod[64 ];
51- XCHAR tszAPIName[64 ];
52- RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam;
53-
54- memset (tszAPIVersion, ' \0 ' , sizeof (tszAPIVersion));
55- memset (tszAPIMethod, ' \0 ' , sizeof (tszAPIMethod));
56- memset (tszAPIName, ' \0 ' , sizeof (tszAPIName));
57- memset (&st_HDRParam, ' \0 ' , sizeof (RFCCOMPONENTS_HTTP_HDRPARAM));
49+ XCHAR tszStrKey[MAX_PATH] = {};
50+ XCHAR tszStrVlu[MAX_PATH] = {};
51+ RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
5852
5953 LPCXSTR lpszMethodPost = _X (" POST" );
60- LPCXSTR lpszMethodOption = _X (" OPTIONS " );
54+ LPCXSTR lpszMethodGet = _X (" GET " );
6155
56+ XCHAR** pptszUrlList;
57+ XCHAR tszUrlName[128 ];
58+ int nUrlCount = 0 ;
59+ // 得到URL参数个数
60+ HttpProtocol_ServerHelp_GetParament (pSt_HTTPParam->tszHttpUri , &pptszUrlList, &nUrlCount, tszUrlName);
61+ if (nUrlCount < 1 )
62+ {
63+ st_HDRParam.nHttpCode = 404 ;
64+ HttpProtocol_Server_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
65+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen);
66+ BaseLib_Memory_Free ((XPPPMEM)&pptszUrlList, nUrlCount);
67+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,发送的URL请求参数不正确:%s" ), lpszClientAddr, pSt_HTTPParam->tszHttpUri );
68+ return false ;
69+ }
6270 st_HDRParam.bIsClose = true ;
6371 st_HDRParam.nHttpCode = 200 ;
6472 if (st_ServiceCfg.st_XProxy .bAuthPass )
@@ -101,39 +109,48 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
101109
102110 if (0 == _tcsxnicmp (lpszMethodPost, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodPost)))
103111 {
104- LPCXSTR lpszMethodPass = _X (" Pass" );
105- LPCXSTR lpszMehtodManage = _X (" Manage" );
106- LPCXSTR lpszMehtodAction = _X (" Action" );
112+ LPCXSTR lpszAPIPass = _X (" Pass" );
113+ LPCXSTR lpszAPIManage = _X (" Manage" );
114+ LPCXSTR lpszAPIAction = _X (" Action" );
107115
108- if (!HttpProtocol_ServerHelp_GetUrlApi (pSt_HTTPParam->tszHttpUri , tszAPIVersion, tszAPIMethod, tszAPIName))
109- {
110- Protocol_StoragePacket_HTTPPacket (tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_APINAME, " api name is incorrect" );
111- HttpProtocol_Server_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
112- XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
113- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" 业务客户端:%s,请求的API不支持" ), lpszClientAddr);
114- return false ;
115- }
116+ BaseLib_String_GetKeyValueA (pptszUrlList[0 ], " =" , tszStrKey, tszStrVlu);
116117 // 通知类型.用于多服务器
117- if (0 == _tcsxnicmp (lpszMethodPass, tszAPIMethod , _tcsxlen (lpszMethodPass )))
118+ if (0 == _tcsxnicmp (lpszAPIPass, tszStrVlu , _tcsxlen (lpszAPIPass )))
118119 {
119- XEngine_Task_Pass (tszAPIName, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam, pptszListHdr, nHdrCount);
120+ // http://127.0.0.1:5100/api?function=pass¶m=xxx
121+ memset (tszStrVlu, ' \0 ' , sizeof (tszStrVlu));
122+ BaseLib_String_GetKeyValueA (pptszUrlList[1 ], " =" , tszStrKey, tszStrVlu);
123+ XEngine_Task_Pass (tszStrVlu, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam, pptszListHdr, nHdrCount);
120124 }
121- else if (0 == _tcsxnicmp (lpszMehtodManage, tszAPIMethod , _tcsxlen (lpszMehtodManage )))
125+ else if (0 == _tcsxnicmp (lpszAPIManage, tszStrVlu , _tcsxlen (lpszAPIManage )))
122126 {
123- XEngine_Task_Manage (tszAPIName, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam, pptszListHdr, nHdrCount);
127+ // http://127.0.0.1:5100/api?function=pass¶m=xxx
128+ memset (tszStrVlu, ' \0 ' , sizeof (tszStrVlu));
129+ BaseLib_String_GetKeyValueA (pptszUrlList[1 ], " =" , tszStrKey, tszStrVlu);
130+ XEngine_Task_Manage (tszStrVlu, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam, pptszListHdr, nHdrCount);
124131 }
125- else if (0 == _tcsxnicmp (lpszMehtodAction, tszAPIMethod , _tcsxlen (lpszMehtodAction )))
132+ else if (0 == _tcsxnicmp (lpszAPIAction, tszStrVlu , _tcsxlen (lpszAPIAction )))
126133 {
127- Storage_TaskAction (tszAPIName, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam);
134+ // http://127.0.0.1:5100/api?function=pass¶m=xxx
135+ memset (tszStrVlu, ' \0 ' , sizeof (tszStrVlu));
136+ BaseLib_String_GetKeyValueA (pptszUrlList[1 ], " =" , tszStrKey, tszStrVlu);
137+ Storage_TaskAction (tszStrVlu, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam);
128138 }
129139 }
130- else if (0 == _tcsxnicmp (lpszMethodOption , pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodOption )))
140+ else if (0 == _tcsxnicmp (lpszMethodGet , pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodGet )))
131141 {
132142 // 用于心跳
133- LPCXSTR lpszHdrBuffer = _X (" Allow: POST GET PUT\r\n " );
134- HttpProtocol_Server_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL , 0 , lpszHdrBuffer);
135- XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
136- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" 业务客户端:%s,请求OPTIONS心跳方法成功" ), lpszClientAddr);
143+ // http://127.0.0.1:5100/api?function=heart
144+ LPCXSTR lpszAPIHeart = _X (" heart" );
145+
146+ BaseLib_String_GetKeyValueA (pptszUrlList[0 ], " =" , tszStrKey, tszStrVlu);
147+ if (0 == _tcsxnicmp (lpszAPIHeart, tszStrVlu, _tcsxlen (lpszAPIHeart)))
148+ {
149+ LPCXSTR lpszHdrBuffer = _X (" Allow: POST GET PUT\r\n " );
150+ HttpProtocol_Server_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL , 0 , lpszHdrBuffer);
151+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
152+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" 业务客户端:%s,请求GET心跳方法成功" ), lpszClientAddr);
153+ }
137154 }
138155 else
139156 {
0 commit comments