@@ -40,8 +40,9 @@ XHTHREAD CALLBACK MessageQueue_HttpThread(XPVOID lParam)
4040}
4141bool MessageQueue_Http_Handle (RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR** pptszListHdr, int nHdrCount)
4242{
43- LPCXSTR lpszMethod = _X (" POST" );
44- if (0 == _tcsxnicmp (lpszMethod, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethod)))
43+ LPCXSTR lpszPostMethod = _X (" POST" );
44+ LPCXSTR lpszGetMethod = _X (" GET" );
45+ if (0 == _tcsxnicmp (lpszPostMethod, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszPostMethod)))
4546 {
4647 int nPLen = 0 ;
4748 XCHAR tszMsgBuffer[4096 ];
@@ -53,6 +54,51 @@ bool MessageQueue_Http_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
5354 ProtocolModule_Parse_Http (lpszMsgBuffer, nMsgLen, &st_ProtocolHdr, tszMsgBuffer, &nPLen);
5455 MessageQueue_TCP_Handle (&st_ProtocolHdr, lpszClientAddr, tszMsgBuffer, nPLen, XENGINE_MQAPP_NETTYPE_HTTP);
5556 }
57+ else if (0 == _tcsxnicmp (lpszGetMethod, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszGetMethod)))
58+ {
59+ // http://127.0.0.1:5201/api?function=get&token=112&key=xengine&serial=1
60+ HttpProtocol_ServerHelp_GetParament (pSt_HTTPParam->tszHttpUri , &pptszListHdr, &nHdrCount);
61+ if (4 != nHdrCount)
62+ {
63+ int nPKTLen = 8196 ;
64+ XCHAR tszPKTBuffer[8196 ];
65+ RFCCOMPONENTS_HTTP_HDRPARAM st_HTTPHdr;
66+
67+ memset (tszPKTBuffer, ' \0 ' , sizeof (tszPKTBuffer));
68+ memset (&st_HTTPHdr, ' \0 ' , sizeof (RFCCOMPONENTS_HTTP_HDRPARAM));
69+
70+ st_HTTPHdr.nHttpCode = 400 ;
71+ st_HTTPHdr.bIsClose = true ;
72+
73+ HttpProtocol_Server_SendMsgEx (xhHTTPPacket, tszPKTBuffer, &nPKTLen, &st_HTTPHdr);
74+ NetCore_TCPXCore_SendEx (xhHTTPSocket, lpszClientAddr, tszPKTBuffer, nPKTLen);
75+ return false ;
76+ }
77+ XCHAR tszKey[128 ];
78+ XCHAR tszValue[128 ];
79+ XENGINE_PROTOCOLHDR st_ProtocolHdr;
80+ XENGINE_PROTOCOL_XMQ st_MQProtocol;
81+
82+ memset (tszKey, ' \0 ' , sizeof (tszKey));
83+ memset (tszValue, ' \0 ' , sizeof (tszValue));
84+ memset (&st_ProtocolHdr, ' \0 ' , sizeof (XENGINE_PROTOCOLHDR));
85+ memset (&st_MQProtocol, ' \0 ' , sizeof (XENGINE_PROTOCOL_XMQ));
86+
87+ BaseLib_OperatorString_GetKeyValue (pptszListHdr[1 ], " =" , tszKey, tszValue);
88+
89+ st_ProtocolHdr.xhToken = _ttxoll (tszValue);
90+ st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER;
91+ st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_XMQ;
92+ st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQGET;
93+ st_ProtocolHdr.xhToken = sizeof (XENGINE_PROTOCOL_XMQ);
94+ st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL;
95+
96+ BaseLib_OperatorString_GetKeyValue (pptszListHdr[2 ], " =" , tszKey, st_MQProtocol.tszMQKey );
97+ BaseLib_OperatorString_GetKeyValue (pptszListHdr[3 ], " =" , tszKey, tszValue);
98+ st_MQProtocol.nSerial = _ttxoll (tszValue);
99+
100+ MessageQueue_TCP_Handle (&st_ProtocolHdr, lpszClientAddr, (LPCXSTR)&st_MQProtocol, sizeof (XENGINE_PROTOCOL_XMQ), XENGINE_MQAPP_NETTYPE_HTTP);
101+ }
56102 else
57103 {
58104 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X (" HTTP消息端:%s,协议错误" ), lpszClientAddr);
0 commit comments