勇芳软件工作室.汉化:  WinHTTP Reference > WinHTTP Functions >

WinHttpCrackUrl

Previous pageReturn to chapter overviewNext page

描述

 

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”“的字符串,则该函数返回不正确的结果。