#pragma once // // упрощенный разбор запроса HTTP/1.1 // Стартовая строка (англ. Starting line) — определяет тип сообщения; // Заголовки (англ. Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения; // Тело сообщения (англ. Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой. #include "JDefines.h" #include "JTerminal.h" #include "ParsingHttp.h" #include "ParsingURI.h" namespace Incart::Net::WebApi { class ParsingQuery { const bool MYDEBUG = false; protected: // const QtMsgType MT; ParsingHttp m_http; QString m_method; ParsingURI m_uri; public: ParsingQuery() { Common::JT() << __PRETTY_FUNCTION__; } virtual ~ParsingQuery() { Common::JT() << __PRETTY_FUNCTION__; } void operator()(QByteArray& query) { m_http(query); m_http.disassemble(); // сделать разбор ошибок !!!!! QList list = m_http.getStartLine().split(" "); bool flg = true; if(flg) flg &= (list.size() >= 3); if(flg) flg &= (list[2] == "HTTP/1.1"); if(flg) { m_method = list[0]; // m_uri.exe(list[1]); // } else { m_method.clear(); m_uri.clear(); } // при необходимости добавить анализ остальных строк } QString& getMethod() { return m_method; } ParsingURI& getURI() { return m_uri; } ParsingHttp& getHttp() { return m_http; } }; } // namespace Incart::Net::WebApi