备注:C++解析URL除了第三方库之外,还可以使用ParseURL,该函数定义在Shlwapi.h中,美中不足的是,无法解析出端口.
/************************************************************************/
/* Uri
/************************************************************************/
Uri::Uri(const String &url)
{
// this->OriginalString = url;
// parse scheme part
intptr_t offsetScheme = url.IndexOf(_T("://"));
if (offsetScheme == -1/* || offsetScheme > 5*/) {
trace(!"invalid url");
return;
}
this->Scheme = url.Substring(0, offsetScheme - 0).toUpper();
// the rest part of url
intptr_t beginOffset = offsetScheme + RLIB_COUNTOF_STR(_T("://"));
const String &url_body = url;
// parse host and port
intptr_t portOffset = url_body.IndexOf(_T(":"), beginOffset);
intptr_t slashOffset = url_body.IndexOf(_T("/"), beginOffset);
if (portOffs