本文整理汇总了C++中HttpMessage::get方法的典型用法代码示例。如果您正苦于以下问题:C++ HttpMessage::get方法的具体用法?C++ HttpMessage::get怎么用?C++ HttpMessage::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HttpMessage
的用法示例。
在下文中一共展示了HttpMessage::get方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: user_auth
bool RestServ::user_auth(mg_connection& nc, HttpMessage data)
{
char user[64]{0x00}, pass[64]{0x00};
auto ul = mg_get_http_var(&(data.get()->body), "user", user, sizeof(user));
auto pl = mg_get_http_var(&(data.get()->body), "pass", pass, sizeof(pass));
try{
if (ul > 0 && pl > 0){
//TODO Check valid
}else{
}
} catch(std::exception& e){
out_ << e.what();
return false;
}
return true;
}
示例2: run
int ACDAudio::run(void* pArg)
{
Os::Logger::instance().log(FAC_ACD, gACD_DEBUG, "ACDAudio::run - starting get from: %s", mUriString.data());
HttpMessage *pGetRequest = new HttpMessage;
pGetRequest->get(mUri, HTTP_GET_TIMEOUT);
UtlString status;
pGetRequest->getResponseStatusText(&status);
if (status == "OK") {
UtlString audioData;
ssize_t audioLength;
const HttpBody* pResponseBody = pGetRequest->getBody();
pResponseBody->getBytes(&audioData, &audioLength);
Os::Logger::instance().log(FAC_ACD, gACD_DEBUG, "ACDAudio::run - received %zd bytes from: %s\n",
audioLength, mUriString.data());
// Now save the downloaded audio to a local file
size_t writeLength;
OsFile audioFile(mAudioPath);
if (audioFile.open(OsFile::CREATE) != OS_SUCCESS) {
Os::Logger::instance().log(FAC_ACD, PRI_ERR, "ACDAudio::run - "
"Unable to create audio file: %s", mAudioPath.data());
}
else {
audioFile.write(audioData, audioLength, writeLength);
audioFile.close();
}
}
else {
Os::Logger::instance().log(FAC_ACD, PRI_ERR, "ACDAudio::run - failed get from: %s", mUriString.data());
}
delete pGetRequest;
return 0;
}
示例3: sizeof
std::shared_ptr<Session> RestServ::push_session(HttpMessage data)
{
char user[64]{0x00}, pass[64]{0x00};
auto ul = mg_get_http_var(&(data.get()->body), "user", user, sizeof(user));
auto pl = mg_get_http_var(&(data.get()->body), "pass", pass, sizeof(pass));
auto s = std::make_shared<Session>();
s->created = s->last_used = mg_time();
s->user = std::string(user, ul);
s->pass = std::string(pass, pl);
s->id = std::hash<std::shared_ptr<Session>>()(s);
std::string&& seed = std::string(user) + std::to_string(s->id);
s->id = std::hash<std::string>()(seed);
session_list_.push_back(s);
return s;
}
示例4: remove_from_session_list
bool RestServ::remove_from_session_list(HttpMessage data)
{
mg_str* cookie_header = mg_get_http_header(data.get(), "cookie");;
if (cookie_header == nullptr)
return false;
char ssid[32]{0x00};
if (!mg_http_parse_header(cookie_header, SESSION_COOKIE_NAME, ssid, sizeof(ssid)))
return false;
auto sid = std::stoul(ssid, nullptr, 10);
for (auto iter = session_list_.begin(); iter != session_list_.end(); ++iter)
{
if ( (*iter)->id == sid )
{
iter = session_list_.erase(iter);
}
}
return true;
}
示例5:
std::shared_ptr<Session> RestServ::get_from_session_list(HttpMessage data)
{
mg_str* cookie_header = mg_get_http_header(data.get(), "cookie");;
if (cookie_header == nullptr)
return nullptr;
char ssid[32]{0x00};
if (!mg_http_parse_header(cookie_header, SESSION_COOKIE_NAME, ssid, sizeof(ssid)))
return nullptr;
auto sid = std::stoul(ssid, nullptr, 10);
auto ret = std::find_if(session_list_.begin(), session_list_.end(), [&sid](std::shared_ptr<Session> p){
return sid == p->id;
});
if (ret == session_list_.end())
return nullptr;
(*ret)->last_used = mg_time();
return *ret;
}
示例6: execute
bool XmlRpcRequest::execute(XmlRpcResponse& response)
{
bool result = false;
// End of constructing the XML-RPC body
mpRequestBody->append(END_PARAMS END_METHOD_CALL);
if (OsSysLog::willLog(FAC_XMLRPC, PRI_INFO))
{
UtlString logString;
ssize_t logLength;
mpRequestBody->getBytes(&logString, &logLength);
if (logString.length() > XmlRpcBody::MAX_LOG)
{
logString.remove(XmlRpcBody::MAX_LOG);
logString.append("\n...");
}
UtlString urlString;
mUrl.toString(urlString);
OsSysLog::add(FAC_XMLRPC, PRI_INFO,
"XmlRpcRequest::execute XML-RPC to '%s' request =\n%s",
urlString.data(),
logString.data());
}
mpHttpRequest->setContentLength(mpRequestBody->getLength());
mpHttpRequest->setBody(mpRequestBody);
mpRequestBody = NULL; // the HttpMessage now owns the request body
// Create an empty response object and sent the built up request
// to the XML-RPC server
HttpMessage httpResponse;
int statusCode = httpResponse.get(mUrl,*mpHttpRequest,XML_RPC_TIMEOUT,true /* persist conn */ );
if (statusCode/100 == 2)
{
UtlString bodyString;
ssize_t bodyLength;
httpResponse.getBody()->getBytes(&bodyString, &bodyLength);
UtlString logString;
if (bodyString.length() > XmlRpcBody::MAX_LOG)
{
logString.append(bodyString, 0, XmlRpcBody::MAX_LOG);
logString.append("\n...");
}
else
{
logString = bodyString;
}
if (response.parseXmlRpcResponse(bodyString))
{
result = true;
OsSysLog::add(FAC_XMLRPC, PRI_INFO,
"XmlRpcRequest::execute XML-RPC received valid response = \n%s",
logString.data());
}
else
{
OsSysLog::add(FAC_XMLRPC, PRI_ERR,
"XmlRpcRequest::execute XML-RPC received fault response = \n%s",
logString.data());
}
}
else if (statusCode == -1)
{
response.setFault(XmlRpcResponse::ConnectionFailure, CONNECTION_FAILURE_FAULT_STRING);
OsSysLog::add(FAC_XMLRPC, PRI_ERR,
"XmlRpcRequest::execute http connection failed");
}
else // some non-2xx HTTP response
{
UtlString statusText;
httpResponse.getResponseStatusText(&statusText);
response.setFault(XmlRpcResponse::HttpFailure, statusText.data());
OsSysLog::add(FAC_XMLRPC, PRI_INFO,
"XmlRpcRequest::execute http request failed; status = %d %s",
statusCode, statusText.data());
}
return result;
}
示例7: httpStatic
void RestServ::httpStatic(mg_connection& nc, HttpMessage data)
{
mg_serve_http(&nc, data.get(), httpoptions_);
}