HttpInfo::HttpInfo(const QByteArray &data, PackageType type): m_httpVersion("HTTP/1.1"), m_errorCode(NoError) { m_url.setScheme("http"); QStringList list = QString::fromUtf8(data).split("\r\n"); if(!list.isEmpty()){ QByteArrayList tmp = list.first().toUtf8().split(' '); if(tmp.count() == 3){ if(type == Request){ setMethod(tmp[0]); QByteArray path = tmp[1].split('?').first(); m_url.setPath(path); if(path.count() < tmp[1].count()) m_url.setQuery(tmp[1].mid(path.count() + 1)); setHttpVersion(tmp[2]); }else{ setHttpVersion(tmp[0]); setError(ErrorCode(tmp[1].toInt())); setErrorString(tmp[2]); } }else{ setError(BadRequest); setErrorString(QString("%1 Bad Request").arg(BadRequest)); return; } int i = 1; for(; i < tmp.count(); ++i){ tmp = list[i].toUtf8().split(':'); if(tmp.count() == 2){ setRawHeader(tmp.first(), tmp.last().trimmed()); if(tmp.first() == "Host") m_url.setHost(tmp.last().trimmed()); }else{ setError(BadRequest); setErrorString(QString("%1 Bad Request").arg(BadRequest)); return; } } }else{ setError(BadRequest); setErrorString(QString("%1 Bad Request").arg(BadRequest)); return; } }
HttpRequest::HttpRequest(const string& sub, const RequestType& type): m_contents() { setHttpVersion("1.1"); setRequestType(type); setSub(sub); }
void Message::reset() { setHttpVersion(1,1) ; httpVersion_.clear() ; headers_.clear() ; body_.clear() ; // allow additional reseting by subclasses resetMembers() ; }