⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpcommon-inl.h

📁 本人收集整理的一份c/c++跨平台网络库
💻 H
字号:
#ifndef UTILS_BASE_HTTPCOMMON_INL_H_#define UTILS_BASE_HTTPCOMMON_INL_H_#include "common.h"#include "httpcommon.h"namespace utils_base {///////////////////////////////////////////////////////////////////////////////// Url///////////////////////////////////////////////////////////////////////////////template<class CTYPE>Url<CTYPE>::Url(const string& url) {  const CTYPE* raw_url = url.c_str();  if (ascnicmp(raw_url, "http://", 7) == 0) {    raw_url += 7;    m_secure = false;  } else if (ascnicmp(raw_url, "https://", 8) == 0) {    raw_url += 8;    m_secure = true;  } else {    return;  }  m_port = UrlDefaultPort(m_secure);  const CTYPE* colon = ::strchr(raw_url, static_cast<CTYPE>(':'));  const CTYPE* slash = ::strchr(raw_url, static_cast<CTYPE>('/'));  if (!colon && !slash) {    m_server = url;    // TODO: rethink this slash    m_path.append(1, static_cast<CTYPE>('/'));  } else {    const CTYPE* ptr;    if (colon == 0) {      ptr = slash;    } else if (slash == 0) {      ptr = colon;    } else {      ptr = _min(colon, slash);    }    m_server.assign(raw_url, ptr - raw_url);    if (ptr == colon) {      CTYPE* tmp = 0;      m_port = static_cast<uint16>(::strtoul(ptr + 1, &tmp, 10));      ptr = tmp;    }    const CTYPE* query = ::strchr(ptr, static_cast<CTYPE>('?'));    if (!query) {      m_path.assign(ptr);    } else {      m_path.assign(ptr, query - ptr);      m_query.assign(query);    }  }  ASSERT(m_path.empty() || (m_path[0] == static_cast<CTYPE>('/')));  ASSERT(m_query.empty() || (m_query[0] == static_cast<CTYPE>('?')));}template<class CTYPE>typename Traits<CTYPE>::string Url<CTYPE>::full_path() {  string full_path(m_path);  full_path.append(m_query);  return full_path;}template<class CTYPE>typename Traits<CTYPE>::string Url<CTYPE>::url() {  CTYPE protocol[9];  asccpyn(protocol, ARRAY_SIZE(protocol), m_secure ? "https://" : "http://");  string url(protocol);  url.append(m_server);  if (m_port != UrlDefaultPort(m_secure)) {    CTYPE format[5], port[32];    asccpyn(format, ARRAY_SIZE(format), ":%hu");    sprintfn(port, ARRAY_SIZE(port), format, m_port);    url.append(port);  }  url.append(m_path);  url.append(m_query);  return url;}///////////////////////////////////////////////////////////////////////////////}  // namespace utils_base#endif  // UTILS_BASE_HTTPCOMMON_INL_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -