URL分解

#include <wininet.h>

#pragma comment(lib, "wininet.lib")

bool InternetCrackUrl( LPCTSTR url,
CString& scheme,
CString& host_name,
DWORD& port,
CString& user_name,
CString& password,
CString& url_path,
CString& extra_info )
{
URL_COMPONENTS uc;
uc.dwStructSize = sizeof(URL_COMPONENTS);
uc.lpszScheme = new TCHAR[1024];
uc.dwSchemeLength = 1024;
uc.lpszHostName = new TCHAR[1024];
uc.dwHostNameLength = 1024;
uc.lpszUserName = new TCHAR[1024];
uc.dwUserNameLength = 1024;
uc.lpszPassword = new TCHAR[1024];
uc.dwPasswordLength = 1024;
uc.lpszUrlPath = new TCHAR[1024];
uc.dwUrlPathLength = 1024;
uc.lpszExtraInfo = new TCHAR[1024];
uc.dwExtraInfoLength = 1024;

if( !InternetCrackUrl( url, 0, 0, &uc ) ) return false;

scheme     = uc.lpszScheme;
host_name  = uc.lpszHostName;
port       = uc.nPort;
user_name  = uc.lpszUserName;
password   = uc.lpszPassword;
url_path   = uc.lpszUrlPath;
extra_info = uc.lpszExtraInfo;

printf("URL:         \"%s\"\n", url);

printf("scheme:      \"%s\"\n", uc.lpszScheme);
printf("host name:   \"%s\"\n", uc.lpszHostName);
printf("port:        %d\n", uc.nPort);
printf("user name:   \"%s\"\n", uc.lpszUserName);
printf("password:    \"%s\"\n", uc.lpszPassword);
printf("url path:    \"%s\"\n", uc.lpszUrlPath);
printf("extra info:  \"%s\"\n", uc.lpszExtraInfo);
printf("scheme type: ");
switch( uc.nScheme ){
case INTERNET_SCHEME_PARTIAL: printf("partial\n"); break;
case INTERNET_SCHEME_UNKNOWN: printf("unknown\n"); break;
case INTERNET_SCHEME_DEFAULT: printf("default\n"); break;
case INTERNET_SCHEME_FTP: printf("FTP\n"); break;
case INTERNET_SCHEME_GOPHER: printf("GOPHER\n"); break;
case INTERNET_SCHEME_HTTP: printf("HTTP\n"); break;
case INTERNET_SCHEME_HTTPS: printf("HTTPS\n"); break;
case INTERNET_SCHEME_FILE: printf("FILE\n"); break;
case INTERNET_SCHEME_NEWS: printf("NEWS\n"); break;
case INTERNET_SCHEME_MAILTO: printf("MAILTO\n"); break;
default: printf("%d\n", uc.nScheme);
}

delete [] uc.lpszScheme;
delete [] uc.lpszHostName;
delete [] uc.lpszUserName;
delete [] uc.lpszPassword;
delete [] uc.lpszUrlPath;
delete [] uc.lpszExtraInfo;

return true;
}
最終更新:2008年09月28日 21:57
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。