描述
WinHttpCrackUrl功能将URL分为其组件部分,如主机名和路径。
C / C ++语法
BOOL WinHttpCrackUrl( LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents ); |
PowerBASIC 语法
FUNCTION WinHttpCrackUrl ( _ BYREF pwszUrl AS WSTRINGZ, _ BYVAL dwUrlLength AS DWORD, _ BYVAL dwFlags AS DWORD, _ BYREF lpUrlComponents AS URL_COMPONENTS _ ) AS LONG |
参数
pwszUrl
[in]指向包含要分离的规范URL的以null终止的Unicode字符串的指针。在尝试破解之前,WinHttpCrackUrl不会检查此URL的有效性或正确的格式。
dwUrlLength
[in]类型为DWORD的值,包含pwszUrl字符串的长度,宽字符。如果dwUrlLength设置为零,WinHttpCrackUrl假设pwszUrl字符串为空终止,并根据该假设确定pwszUrl字符串的长度。
dwFlags
[in]类型为DWORD的值,其中包含控制操作的标志。这可以是以下值之一:
ICU_DECODE
将“转义编码”(%xx)的字符转换为未转义的形式。这不解码其他编码,如UTF-8。只有当用户在URL_COMPONENTS结构中提供缓冲区才能复制组件时,才能使用此函数。
ICU_ESCAPE
将某些字符转义为转义序列(%xx)。要转义的字符是非ASCII字符或必须转义以在HTTP请求中表示的ASCII字符。只有当用户在URL_COMPONENTS结构中提供缓冲区才能复制组件时,才能使用此函数。
lpUrlComponents
[in, out]指向接收URL组件的URL_COMPONENTS结构的指针。
返回值
如果函数成功,则返回TRUE,否则返回FALSE。要获取扩展错误信息,请调用GetLastError.返回的错误代码有:
错误代码 |
描述 |
ERROR_WINHTTP_INTERNAL_ERROR |
发生内部错误。 |
ERROR_WINHTTP_INVALID_URL |
网址无效 |
ERROR_WINHTTP_UNRECOGNIZED_SCHEME |
无法识别或不支持URL方案。 |
ERROR_NOT_ENOUGH_MEMORY |
没有足够的内存来完成请求的操作。(Windows错误代码) |
备注
即使在异步模式下使用WinHTTP(也就是说,当WinHttpOpen中设置了WINHTTP_FLAG_ASYNC)时,此函数将同步运行。返回值表示成功或失败。要获取扩展错误信息,请调用GetLastError.
所需的组件由URL_COMPONENTS结构的成员指示。每个组件都有一个指向该值的指针,并有一个存储存储值的长度的成员。如果组件的值和长度都等于零,则不返回该组件。如果指向组件值的指针为NULL,并且其对应的长度成员的值为非零,则pwszUrl字符串中相应组件的第一个字符的地址存储在指针中,并且存储组件的长度在长度成员。
如果指针包含用户提供的缓冲区的地址,则length成员必须包含缓冲区的大小。WinHttpCrackUrl函数将组件复制到缓冲区中,并将长度成员设置为已复制组件的长度,对于尾部字符串终止符,该长度成员减1。如果用户提供的缓冲区不够大,WinHttpCrackUrl返回FALSE,GetLastError返回ERROR_INSUFFICIENT_BUFFER。
要使WinHttpCrackUrl正常工作,URL_COMPONENTS结构的大小必须存储在该结构的dwStructSize成员中。
如果pwszUrl传入的URL的Internet协议不是HTTP或HTTPS,则WinHttpCrackUrl返回FALSE,GetLastError表示ERROR_WINHTTP_UNRECOGNIZED_SCHEME.
WinHttpCrackUrl在尝试破解之前,不会检查网址的有效性或格式。因此,如果传入诸如“http:// server?Bad = URL”“的字符串,则该函数返回不正确的结果。