dmpspserverrequest.cpp 2.1 KB
/**************************************************************************
 * file:              dmpspserverrequest.cpp
 
 * Author:            wanzhongping
 * Date:              2021-01-14 21:59:49
 * Email:             zhongpingw@chinadci.com
 * copyright:         广州城市信息研究所有限公司
 ***************************************************************************/
#include "dmpspserverrequest.h"
#include <boost/regex.hpp>
#include "dmpserverutils.h"

DmpSpServerRequest::DmpSpServerRequest(SP_HttpRequest* request)
{
    const char* h = request->getHeaderValue("host");
    std::string host(h);
    std::string::size_type p = host.find(":");
    if (p != std::string::npos) {
        domain_= host.substr(0, p);
        port_ = host.substr(p+1,host.length());
    }
    else {
        domain_ = host;
    }

    const char* med = request->getMethod();
    if (med)
    {
        if (strcmp(med,"POST") == 0)
        {
          setMethod(POST_METHOD);
          data_ = request->getContent();
          dataLen_ = request->getContentLength();
        }
        else
        {
          setMethod(GET_METHOD);
        }
    }
    
    //获取querystring
    std::string url(request->getURL());
    //std::string  deurl=Percent::decode( url);
    std::string::size_type pos = url.find("?");
    if (pos != std::string::npos) {
        std::string path = url.substr(0, pos);
        setPath(path);
        std::string queryString;
        queryString = url.substr(pos+1,url.length());
        setQuery(queryString);
    }
    else {
        isRestful_ = true;
        setPath(url);
    }
    
    // for(int i=0; i< request->getParamCount(); i++) {
    //    SetParameter(request->getParamName(i), request->getParamValue(i));
    // }

    //添加请求头信息
    for(int i=0; i< request->getHeaderCount(); i++) {
      setHeader(request->getHeaderName(i),request->getHeaderValue(i));
    }
}

const void * DmpSpServerRequest::GetData() const 
{
   return data_;
}
int DmpSpServerRequest::GetDataLength() const
{
   return dataLen_;
}