InternetCrackUrl
방법을 사용할 수 있습니다.
이 간단한
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils,
WinInet;
procedure ParseURL(const lpszUrl: string);
var
lpszScheme : array[0..INTERNET_MAX_SCHEME_LENGTH - 1] of Char;
lpszHostName : array[0..INTERNET_MAX_HOST_NAME_LENGTH - 1] of Char;
lpszUserName : array[0..INTERNET_MAX_USER_NAME_LENGTH - 1] of Char;
lpszPassword : array[0..INTERNET_MAX_PASSWORD_LENGTH - 1] of Char;
lpszUrlPath : array[0..INTERNET_MAX_PATH_LENGTH - 1] of Char;
lpszExtraInfo : array[0..1024 - 1] of Char;
lpUrlComponents : TURLComponents;
begin
ZeroMemory(@lpszScheme, SizeOf(lpszScheme));
ZeroMemory(@lpszHostName, SizeOf(lpszHostName));
ZeroMemory(@lpszUserName, SizeOf(lpszUserName));
ZeroMemory(@lpszPassword, SizeOf(lpszPassword));
ZeroMemory(@lpszUrlPath, SizeOf(lpszUrlPath));
ZeroMemory(@lpszExtraInfo, SizeOf(lpszExtraInfo));
ZeroMemory(@lpUrlComponents, SizeOf(TURLComponents));
lpUrlComponents.dwStructSize := SizeOf(TURLComponents);
lpUrlComponents.lpszScheme := lpszScheme;
lpUrlComponents.dwSchemeLength := SizeOf(lpszScheme);
lpUrlComponents.lpszHostName := lpszHostName;
lpUrlComponents.dwHostNameLength := SizeOf(lpszHostName);
lpUrlComponents.lpszUserName := lpszUserName;
lpUrlComponents.dwUserNameLength := SizeOf(lpszUserName);
lpUrlComponents.lpszPassword := lpszPassword;
lpUrlComponents.dwPasswordLength := SizeOf(lpszPassword);
lpUrlComponents.lpszUrlPath := lpszUrlPath;
lpUrlComponents.dwUrlPathLength := SizeOf(lpszUrlPath);
lpUrlComponents.lpszExtraInfo := lpszExtraInfo;
lpUrlComponents.dwExtraInfoLength := SizeOf(lpszExtraInfo);
InternetCrackUrl(PChar(lpszUrl), Length(lpszUrl), ICU_DECODE or ICU_ESCAPE, lpUrlComponents);
Writeln(Format('Protocol : %s',[lpszScheme]));
Writeln(Format('Host : %s',[lpszHostName]));
Writeln(Format('User : %s',[lpszUserName]));
Writeln(Format('Password : %s',[lpszPassword]));
Writeln(Format('Path : %s',[lpszUrlPath]));
Writeln(Format('ExtraInfo: %s',[lpszExtraInfo]));
end;
begin
try
ParseURL('http://login:[email protected]/some_path/something_else.html?param1=val¶m2=val');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
readln;
end.
이 반환됩니다 시도
Protocol : http
Host : somehost.somedomain.com
User : login
Password : password
Path : /some_path/something_else.html
ExtraInfo: ?param1=val¶m2=val
그 목적을 위해
TIdURI
클래스가 인디, 예와
우리의 비밀 번호는 일반 텍스트가 아닙니다. – eggy
@eggy 기술적으로 이것은 일부 시스템 인증 방법입니다. 암호화가 필요한지 여부는 서버 구현에 달려 있습니다. –
@eggy 추가하려면 스위치/라우터, IP 감시 카메라, VoIP 전화 등과 같은 하드웨어 API가 있어야합니다. –