#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