日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

WINHTTP的API接口说明

發(fā)布時(shí)間:2023/12/15 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 WINHTTP的API接口说明 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

BOOL WINAPI WinHttpAddRequestHeaders(
_In_ HINTERNET hRequest,
_In_ LPCWSTR pwszHeaders,
_In_ DWORD dwHeadersLength,
_In_ DWORD dwModifiers
);
作用:加入一個(gè)HTTP的請(qǐng)求頭域。

參數(shù)說明:
hRequest [in]
一個(gè)HINTERNET句柄通過調(diào)用WinHttpOpenRequest返回。

pwszHeaders [in]
請(qǐng)求的頭域字符串,每一個(gè)頭域(多個(gè)頭域以)使用回車換行(
)結(jié)束

dwHeadersLength [in]
無符號(hào)長(zhǎng)整型變量,指向pwszHeaders的長(zhǎng)度,假設(shè)該參數(shù)為(ulong)-1L時(shí),自己主動(dòng)以"/0"結(jié)束來計(jì)算pwszHeaders的長(zhǎng)度。

dwModifiers [in]
頭域的改動(dòng)模式。

包含例如以下值:
WINHTTP_ADDREQ_FLAG_ADD加入一個(gè)頭域,假設(shè)頭域存在時(shí)值將被新加入的值替換。與WINHTTP_ADDREQ_FLAG_REPLAC一起使用
WINHTTP_ADDREQ_FLAG_ADD_IF_NEW加入一個(gè)不存在頭域,假設(shè)該頭域存在則返回一個(gè)錯(cuò)誤。
WINHTTP_ADDREQ_FLAG_COALESCE將同名的頭域進(jìn)行合并。
WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA合并同名的頭域,值使用逗號(hào)隔開。

WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON合并同名的頭域,值使用分號(hào)隔開。
WINHTTP_ADDREQ_FLAG_REPLACE替換和刪除一個(gè)頭域。假設(shè)值為空。則刪除,否則被替換。

返回值為假時(shí),使用getlasterror來得到錯(cuò)誤信息。
err code:
ERROR_WINHTTP_INCORRECT_HANDLE_STATE請(qǐng)求不能被運(yùn)行,由于句柄的狀態(tài)不對(duì)
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE請(qǐng)求的句柄類型不對(duì)
ERROR_WINHTTP_INTERNAL_ERROR內(nèi)部錯(cuò)誤
ERROR_NOT_ENOUGH_MEMORY沒有足夠的內(nèi)存來完畢操作。

BOOL WinHttpCheckPlatform(void);
作用:推斷是否是微軟支持的平臺(tái)。
返回值:TRUE支持,否則不支持。

BOOL WINAPI WinHttpCloseHandle(
_In_ HINTERNET hInternet
);
作用:關(guān)閉一個(gè)HINTERNET句柄。
參考:
hInternet [in]
待關(guān)閉HINTERNET的句柄。

當(dāng)返回false時(shí)能夠調(diào)用getlasterror來得到相關(guān)信息。

err code:
ERROR_WINHTTP_SHUTDOWNwinhttp已關(guān)閉或卸載
ERROR_WINHTTP_INTERNAL_ERRORINTERNAL錯(cuò)誤
ERROR_NOT_ENOUGH_MEMORY內(nèi)存不夠

HINTERNET WINAPI WinHttpConnect(
_In_ HINTERNET hSession,
_In_ LPCWSTR pswzServerName,
_In_ INTERNET_PORT nServerPort,
_Reserved_ DWORD dwReserved
);
作用:建立一個(gè)http的連接會(huì)話。
參數(shù):
hSession [in]
通過調(diào)用winHttpOpen返回的session句柄。

pswzServerName [in]
主機(jī)或域名。

能夠有IP地址也能夠是網(wǎng)站域名。

nServerPort [in]
主機(jī)的port;
取值:
INTERNET_DEFAULT_HTTP_PORT默認(rèn)的HTTPport80。
INTERNET_DEFAULT_HTTPS_PORT默認(rèn)的HTTPSport443。能夠通過調(diào)用WinHttpOpenRequest函數(shù)中的WINHTTP_FLAG_SECURE 開啟HTTPS
INTERNET_DEFAULT_PORT默認(rèn)HTTP為80。HTTPS為443

dwReserved [in]
保留參數(shù),設(shè)置為0;

返回值:假設(shè)調(diào)用成功則返回一個(gè)HTTP連接會(huì)話的句柄,否則為NULL。為NULL時(shí)能夠調(diào)用getlasterror查看。
err code:
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE句柄的類型不對(duì)。
ERROR_WINHTTP_INTERNAL_ERRORINTERNAL錯(cuò)誤。
ERROR_WINHTTP_INVALID_URL無效的URL
ERROR_WINHTTP_OPERATION_CANCELLED操作被取消。通經(jīng)常使用于操作完畢前。
ERROR_WINHTTP_UNRECOGNIZED_SCHEMEURL不能被識(shí)別或不支持。
ERROR_WINHTTP_SHUTDOWNwinhttp已關(guān)閉或卸載
ERROR_NOT_ENOUGH_MEMORY內(nèi)存不夠

BOOL WINAPI WinHttpCrackUrl(
_In_ LPCWSTR pwszUrl,
_In_ DWORD dwUrlLength,
_In_ DWORD dwFlags,
_Inout_ LPURL_COMPONENTS lpUrlComponents
);
作用:分離host和路徑
參數(shù):
pwszUrl [in]
將正確規(guī)范的URL進(jìn)行分離。但不正確URL做有效性驗(yàn)證。

dwUrlLength [in]
pwszUrl的長(zhǎng)度,假設(shè)設(shè)為0,則默認(rèn)pwszUrl字符以NULL結(jié)束來計(jì)算長(zhǎng)度。

dwFlags [in]
操作標(biāo)識(shí)。可取值:
ICU_DECODE字符轉(zhuǎn)換,但不解編碼,如UTF-8。

假設(shè)使用。能夠通過傳入U(xiǎn)RL_COMPONENTS結(jié)構(gòu)。
ICU_ESCAPE忽略字符轉(zhuǎn)議,相同能夠傳入U(xiǎn)RL_COMPONENTS結(jié)構(gòu)進(jìn)行設(shè)置。
ICU_REJECT_USERPWD拒絕的URL輸入包括username,password。或兩者。假設(shè)函數(shù)失敗,由于一個(gè)無效的URL。隨后調(diào)用GetLastError函數(shù)將返回ERROR_WINHTTP_INVALID_URL的。

lpUrlComponents [in, out]
指向URL_COMPONENTS 結(jié)構(gòu)的指針

返回值:
當(dāng)返回false時(shí)能夠調(diào)用getlasterror來得到相關(guān)信息。

err code:
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_WINHTTP_INVALID_URL
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
ERROR_NOT_ENOUGH_MEMORY

DWORD WinHttpCreateProxyResolver(
_In_ HINTERNET hSession,
_Out_ HINTERNET *phResolver
);
作用:創(chuàng)建代理解釋器
參數(shù):
hSession [in]
成功調(diào)用WinHttpOpen返回的句柄。該句柄必須打開WINHTTP_FLAG_ASYNC標(biāo)識(shí)。

phResolver [out]
通過調(diào)用WinHttpGetProxyForUrlEx返回的一個(gè)新句柄。當(dāng)完畢或取消時(shí)可調(diào)用WinHttpCloseHandle來關(guān)閉。

返回值:返回操作的狀態(tài)
ERROR_SUCCESS操作成功
ERROR_INVALID_HANDLEhSession 為NULL
ERROR_WINHTTP_INCORRECT_HANDLE_TYPEhSession 不是調(diào)用 WinHttpOpen 返回或 hSession 沒有開啟異步標(biāo)識(shí) WINHTTP_FLAG_ASYNC

BOOL WINAPI WinHttpCreateUrl(
_In_ LPURL_COMPONENTS lpUrlComponents,
_In_ DWORD dwFlags,
_Out_ LPWSTR pwszUrl,
_Inout_ LPDWORD lpdwUrlLength
);
作用:創(chuàng)建一個(gè)URL。
參數(shù):
lpUrlComponents [in]
指向一個(gè)包括要?jiǎng)?chuàng)建的URL的 URL_COMPONENTS 結(jié)構(gòu)體指針

dwFlags [in]
操作模式,取值:
ICU_ESCAPE轉(zhuǎn)換結(jié)構(gòu)體中的lpszUrlPath 和 lpszExtraInfo中的全部不安全的轉(zhuǎn)議字符。

ICU_REJECT_USERPWD拒絕的URL輸入包括username,password。或兩者。假設(shè)函數(shù)失敗。由于一個(gè)無效的URL。隨后調(diào)用GetLastError函數(shù)將返回ERROR_WINHTTP_INVALID_URL的。

pwszUrl [out]
指向一個(gè)寬字節(jié)的字符串。

lpdwUrlLength [in, out]
設(shè)定能夠接收pwszUrl字符的長(zhǎng)度。

返回值:
當(dāng)返回false時(shí)能夠調(diào)用getlasterror來得到相關(guān)信息。
err code:
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_NOT_ENOUGH_MEMORY

BOOL WINAPI WinHttpDetectAutoProxyConfigUrl(
_In_ DWORD dwAutoDetectFlags,
_Out_ LPWSTR *ppwszAutoConfigUrl
);
作用:刪除自己主動(dòng)代理配置的URL
參數(shù):
dwAutoDetectFlags [in]
使用本地PAC文件協(xié)議,假設(shè)DHCP和DNS都被檢測(cè)到。則優(yōu)先使用DHCP,假設(shè)PAC URL 使用DHCP檢測(cè)不到再使用DNS。

取值:
WINHTTP_AUTO_DETECT_TYPE_DHCP使用DHCP
WINHTTP_AUTO_DETECT_TYPE_DNS_A使用DNS

ppwszAutoConfigUrl [out]
返回一個(gè)代理數(shù)據(jù)URL的寬字節(jié)字符串,必須調(diào)用 GlobalFree 來釋放該字符串。

返回值:
當(dāng)返回false時(shí)能夠調(diào)用getlasterror來得到相關(guān)信息。

err code:
ERROR_WINHTTP_AUTODETECTION_FAILED返回WinHTTP的代理自己主動(dòng)配置(PAC)文件是無法發(fā)現(xiàn)的URL。
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_NOT_ENOUGH_MEMORY

VOID WINAPI WinHttpFreeProxyResult(
_Inout_ WINHTTP_PROXY_RESULT *pProxyResult
);
作用:釋放代理
參數(shù):
pProxyResult [in, out]
指向 WINHTTP_PROXY_RESULT 結(jié)構(gòu)的指針。該結(jié)構(gòu)調(diào)用 WinHttpGetProxyResult得到。

BOOL WINAPI WinHttpGetDefaultProxyConfiguration(
_Inout_ WINHTTP_PROXY_INFO *pProxyInfo
);
作用:獲了以默認(rèn)代理配置。

參數(shù):
pProxyInfo [in, out]
指向WINHTTP_PROXY_INFO結(jié)構(gòu)的指針。

返回值:
當(dāng)返回false時(shí)能夠調(diào)用getlasterror來得到相關(guān)信息。
err code:
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_NOT_ENOUGH_MEMORY

BOOL WINAPI WinHttpGetIEProxyConfigForCurrentUser(
_Inout_ WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig
);
作用:得到當(dāng)前用戶的IE代理配置
參數(shù):
pProxyConfig [in, out]
指向WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 結(jié)構(gòu)的指針,作為傳出參數(shù)時(shí)。包含當(dāng)前IE網(wǎng)絡(luò)連接的代理配置信息。如VPN,LAN, 拔號(hào)連接等。

返回值:
當(dāng)返回false時(shí)能夠調(diào)用getlasterror來得到相關(guān)信息。
err code:
ERROR_FILE_NOT_FOUNDIE設(shè)置文件沒有發(fā)現(xiàn)。

ERROR_WINHTTP_INTERNAL_ERROR
ERROR_NOT_ENOUGH_MEMORY

BOOL WINAPI WinHttpGetProxyForUrl(
_In_ HINTERNET hSession,
_In_ LPCWSTR lpcwszUrl,
_In_ WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions,
_Out_ WINHTTP_PROXY_INFO *pProxyInfo
);
作用:通過URL得到代理信息。
參數(shù):
hSession [in]
通過調(diào)用WinHttpOpen函數(shù)返回的hSession句柄。

lpcwszUrl [in]
寬字節(jié)的URL

pAutoProxyOptions [in]
指向使用自己主動(dòng)代理選項(xiàng)的WINHTTP_AUTOPROXY_OPTIONS 結(jié)構(gòu)體指針。

pProxyInfo [out]
指向 WINHTTP_PROXY_INFO 結(jié)構(gòu)的指針。 這信結(jié)構(gòu)體將應(yīng)用到WINHTTP_OPTION_PROXY結(jié)構(gòu)中的option項(xiàng)。
釋放結(jié)構(gòu)中的lpszProxy和lpszProxyBypass字符串。使用 GlobalFree 函數(shù)。

返回值:
當(dāng)返回false時(shí)能夠調(diào)用getlasterror來得到相關(guān)信息。

err code:
ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERRORURL無法指定代理,找不到代理server錯(cuò)誤。
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT在自己主動(dòng)代理配置文件里出錯(cuò)PAC文件。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE句柄類型不對(duì)。

ERROR_WINHTTP_INTERNAL_ERROR網(wǎng)絡(luò)異常。
ERROR_WINHTTP_INVALID_URLURL無效。

ERROR_WINHTTP_LOGIN_FAILURE登錄嘗試失敗。當(dāng)遇到此錯(cuò)誤時(shí),關(guān)閉請(qǐng)求句柄調(diào)用WinHttpCloseHandle。

必須創(chuàng)建一個(gè)新的請(qǐng)求進(jìn)行重試。

ERROR_WINHTTP_OPERATION_CANCELLED操作被取消
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT找不到PAC文件或返回404 not found。
ERROR_WINHTTP_UNRECOGNIZED_SCHEMEPAC文件指定的URL不是http或https開頭的請(qǐng)求
ERROR_NOT_ENOUGH_MEMORY內(nèi)存不夠

DWORD WinHttpGetProxyForUrlEx(
_In_ HINTERNET hResolver,
_In_ PCWSTR pcwszUrl,
_In_ WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions,
_In_ DWORD_PTR pContext
);
作用:通過URL獲代替理信息。
參數(shù):
hResolver [in]
通過調(diào)用WinHttpCreateProxyResolver函數(shù)返回的句柄。

pcwszUrl [in]
unicode URL字符串。

pAutoProxyOptions [in]
指向使用自己主動(dòng)代理選項(xiàng)的WINHTTP_AUTOPROXY_OPTIONS結(jié)構(gòu)體指針。

pContext [in]
上下文數(shù)據(jù)將被回調(diào)函數(shù)進(jìn)行回調(diào)。

返回值:返回操作結(jié)果的狀態(tài)值。
取值:
ERROR_IO_PENDING異步操作正在進(jìn)行中。

ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERRORURL定位不到代理server。
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT自己主動(dòng)代理配置文件出錯(cuò)(PAC)。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE句柄類型不對(duì)。

ERROR_WINHTTP_INVALID_URL無效的URL。
ERROR_WINHTTP_OPERATION_CANCELLED操作被取消。
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPTURL未搜索到或server返回404 not found。
ERROR_WINHTTP_UNRECOGNIZED_SCHEMEPAC文件指定的URL不是http或https開頭的請(qǐng)求
ERROR_NOT_ENOUGH_MEMORY

DWORD WINAPI WinHttpGetProxyResult(
_In_ HINTERNET hResolver,
_Out_ WINHTTP_PROXY_RESULT *pProxyResult
);
作用:獲代替理結(jié)果。
參數(shù):
hResolver [in]
調(diào)用WinHttpGetProxyForUrlEx函數(shù)返回的句柄。

pProxyResult [out]
指向WINHTTP_PROXY_RESULT的結(jié)構(gòu)體指針。該結(jié)構(gòu)包含內(nèi)調(diào)用WinHttpGetProxyForUrlEx后得到的代理結(jié)果數(shù)據(jù), 這個(gè)結(jié)果數(shù)據(jù)必須調(diào)用WinHttpFreeProxyResult進(jìn)行釋放。

返回值:返回操作結(jié)果的狀態(tài)值。
取值:
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE句柄類型不對(duì)。
ERROR_WINHTTP_INCORRECT_HANDLE_STATE調(diào)用WinHttpGetProxyForUrlEx返回的句柄狀態(tài)不對(duì)。

HINTERNET WINAPI WinHttpOpen(
_In_opt_ LPCWSTR pwszUserAgent,
_In_ DWORD dwAccessType,
_In_ LPCWSTR pwszProxyName,
_In_ LPCWSTR pwszProxyBypass,
_In_ DWORD dwFlags
);
作用:HTTP初始化。
參數(shù):
pwszUserAgent [in, optional]
HTTP協(xié)議中的User-Agent的字符串變量。

dwAccessType [in]
請(qǐng)求類型,取值:
WINHTTP_ACCESS_TYPE_NO_PROXY攻克了全部不使用代理server的主機(jī)名。
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY檢測(cè)靜態(tài)代理或注冊(cè)表配置代理,不繼承和不共享IE的代理設(shè)置。調(diào)用WinHttpSetDefaultProxyConfiguration進(jìn)行設(shè)置。

WINHTTP_ACCESS_TYPE_NAMED_PROXY通過路由列表指定的名稱進(jìn)行代理。

pwszProxyName [in]
當(dāng)dwAccessType設(shè)置為WINHTTP_ACCESS_TYPE_NAMED_PROXY時(shí),必須指定代理名稱,winHttp函數(shù)庫僅僅支持CERN前綴的HTTP代理。
假設(shè)dwAccessType不設(shè)置WINHTTP_ACCESS_TYPE_NAMED_PROXY,則該參數(shù)必須設(shè)置為WINHTTP_NO_PROXY_NAME

pwszProxyBypass [in]
代理的主機(jī)名或IP地址,假設(shè)dwAccessType設(shè)置為WINHTTP_ACCESS_TYPE_NAMED_PROXY不使用路由代理。
能夠使用通配符字串,不要使用空字符串。假設(shè)指定為"<local>"宏作為入口。該功能通過不論什么主機(jī)。
假設(shè)dwAccessType不設(shè)置為WINHTTP_ACCESS_TYPE_NAMED_PROXY則該參數(shù)值必須為WINHTTP_NO_PROXY_BYPASS。

dwFlags [in]
標(biāo)志值,取值:
WINHTTP_FLAG_ASYNC默認(rèn)情況下是同步請(qǐng)求過程,假設(shè)使用異步請(qǐng)求。須要調(diào)用WinHttpSetStatusCallback來設(shè)定回調(diào)函數(shù)。

返回值:
假設(shè)成功返回一個(gè)session句柄,否則返回NULL。

HINTERNET WINAPI WinHttpOpenRequest(
_In_ HINTERNET hConnect,
_In_ LPCWSTR pwszVerb,
_In_ LPCWSTR pwszObjectName,
_In_ LPCWSTR pwszVersion,
_In_ LPCWSTR pwszReferrer,
_In_ LPCWSTR *ppwszAcceptTypes,
_In_ DWORD dwFlags
);
作用:建立一個(gè)http請(qǐng)求,返回成功請(qǐng)求句柄。
hConnect [in]
通過調(diào)用WinHttpConnect返回的句柄。

pwszVerb [in]
HTTP請(qǐng)求動(dòng)作。如get,post等,假設(shè)設(shè)為NULL。則默覺得GET請(qǐng)求。

pwszObjectName [in]
包括指定的HTTP請(qǐng)求的目標(biāo)資源的名稱。這一般是一個(gè)文件名稱,可運(yùn)行模塊,或搜索符。

pwszVersion [in]
HTTP的版本號(hào),假設(shè)為NULL,默覺得 HTTP/1.1.

pwszReferrer [in]
指向一個(gè)字符串,該字符串指定的文件的URL,該URL的要求填寫pwszObjectName。

假設(shè)沒有設(shè)定規(guī)定的文件,這參數(shù)設(shè)置為WINHTTP_NO_REFERER。

ppwszAcceptTypes [in]
設(shè)置為WINHTTP_DEFAULT_ACCEPT_TYPES接收類型,默覺得純文本的圖片和二進(jìn)制,假設(shè)是多媒體數(shù)據(jù)接收。須要進(jìn)行類型指定。請(qǐng)參考:http://www.iana.org/assignments/media-types/

dwFlags [in]
標(biāo)識(shí),取值:
WINHTTP_FLAG_BYPASS_PROXY_CACHE與WINHTTP_FLAG_REFRESH的行為同樣,進(jìn)行刷新。
WINHTTP_FLAG_ESCAPE_DISABLEpwszObjectName中的字符被進(jìn)行轉(zhuǎn)議。
WINHTTP_FLAG_ESCAPE_DISABLE_QUERY查詢pwszObjectName中的字符須要進(jìn)行字符轉(zhuǎn)義。

WINHTTP_FLAG_ESCAPE_PERCENTpwszObjectName中傳遞的字符串從LPCWSTR轉(zhuǎn)換為L(zhǎng)PSTR。全部不安全的字符轉(zhuǎn)換為轉(zhuǎn)義序列,包含百分比符號(hào)。默認(rèn)情況下,全部不安全的百分比符號(hào)之外的字符轉(zhuǎn)換為轉(zhuǎn)義序列。
WINHTTP_FLAG_NULL_CODEPAGEpwszObjectName中的ANSI字符替換為WCHAR字符,不正確轉(zhuǎn)議進(jìn)行檢測(cè)。
WINHTTP_FLAG_REFRESH當(dāng)使用此標(biāo)志時(shí)。一個(gè)“的Pragma:no-cache的”頭加入到請(qǐng)求句柄。

當(dāng)創(chuàng)建一個(gè)HTTP請(qǐng)求頭。一個(gè)“的Cache-Control:no-cache的”也添加了。
WINHTTP_FLAG_SECURE啟用SSL/TLS安全。

返回值:成功返回請(qǐng)求的句柄,否則為NULL。

BOOL WINAPI WinHttpQueryAuthSchemes(
_In_ HINTERNET hRequest,
_Out_ LPDWORD lpdwSupportedSchemes,
_Out_ LPDWORD lpdwFirstScheme,
_Out_ LPDWORD pdwAuthTarget
);
作用:函數(shù)返回的server所支持的授權(quán)方案。
參數(shù):
hRequest [in]
調(diào)用WinHttpOpenRequest返回的句柄。

lpdwSupportedSchemes [out]
當(dāng)前支持的授權(quán)方式。取值:
WINHTTP_AUTH_SCHEME_BASICBASIC認(rèn)證方式。
WINHTTP_AUTH_SCHEME_NTLMNTLM認(rèn)證方式。

WINHTTP_AUTH_SCHEME_PASSPORTPASSPORT認(rèn)證方式。
WINHTTP_AUTH_SCHEME_DIGESTDIGEST認(rèn)證方式。

WINHTTP_AUTH_SCHEME_NEGOTIATE在NTLM 。 Kerberos之間的認(rèn)證方式。

lpdwFirstScheme [out]
首選授權(quán)方式,取值:
WINHTTP_AUTH_SCHEME_BASICBASIC認(rèn)證方式。
WINHTTP_AUTH_SCHEME_NTLMNTLM認(rèn)證方式。

WINHTTP_AUTH_SCHEME_PASSPORTPASSPORT認(rèn)證方式。

WINHTTP_AUTH_SCHEME_DIGESTDIGEST認(rèn)證方式。
WINHTTP_AUTH_SCHEME_NEGOTIATE在NTLM 。 Kerberos之間的認(rèn)證方式。

pdwAuthTarget [out]
授權(quán)目標(biāo)。取值:
WINHTTP_AUTH_TARGET_SERVERserver授權(quán)。
WINHTTP_AUTH_TARGET_PROXY代理授權(quán)。

返回值:TRUE or FALSE。

BOOL WINAPI WinHttpQueryDataAvailable(
_In_ HINTERNET hRequest,
_Out_ LPDWORD lpdwNumberOfBytesAvailable
);
作用:請(qǐng)求返回的數(shù)據(jù)量,以字節(jié)為位進(jìn)行讀取。

參數(shù):
hRequest [in]
調(diào)用WinHttpOpenRequest返回的句本。

在調(diào)用WinHttpQueryDataAvailable之前,必須先調(diào)用WinHttpReceiveResponse。

lpdwNumberOfBytesAvailable [out]
字節(jié)流數(shù)據(jù)。假設(shè)設(shè)置為異步接收,則這里為NULL,通過回調(diào)函數(shù)進(jìn)行處理。

返回值:TRUE or FALSE。

BOOL WINAPI WinHttpQueryHeaders(
_In_ HINTERNET hRequest,
_In_ DWORD dwInfoLevel,
_In_opt_ LPCWSTR pwszName,
_Out_ LPVOID lpBuffer,
_Inout_ LPDWORD lpdwBufferLength,
_Inout_ LPDWORD lpdwIndex
);
作用:HTTP頭域數(shù)據(jù)。

參數(shù):
hRequest [in]
調(diào)用WinHttpOpenRequest返回的句柄。

在使用WinHttpQueryHeaders前必須等WinHttpReceiveResponse調(diào)用完畢。

dwInfoLevel [in]
類型為DWORD值。指定查詢信息標(biāo)志頁上列出的屬性和修飾符標(biāo)志的組合。這些屬性和修飾符標(biāo)志指示被請(qǐng)求的信息。以及它是怎樣被格式化。

pwszName [in, optional] 可選
頭域名。假設(shè)dwInfoLevel參數(shù)不是WINHTTP_QUERY_CUSTOM,則設(shè)置為WINHTTP_HEADER_NAME_BY_INDEX。

lpBuffer [out]
接收該信息的緩沖區(qū)的指針。

將該參數(shù)設(shè)置為WINHTTP_NO_OUTPUT_BUFFER導(dǎo)致該函數(shù)返回FALSE。

調(diào)用GetLastError,然后返回ERROR_INSUFFICIENT_BUFFER和lpdwBufferLength包括的字節(jié)數(shù)必須持有所要求的信息。

lpdwBufferLength [in, out]
指針類型為DWORD的值指定的數(shù)據(jù)緩沖區(qū)的長(zhǎng)度,以字節(jié)為單位。

當(dāng)函數(shù)返回時(shí),此參數(shù)包括指針的值。指定的信息寫入到緩沖區(qū)的長(zhǎng)度。
當(dāng)函數(shù)返回字符串,以下的規(guī)則適用
1、假設(shè)函數(shù)調(diào)用成功,lpdwBufferLength指定字符串的長(zhǎng)度,以字節(jié)為單位。減去終止空。
2、假設(shè)函數(shù)調(diào)用失敗,則返回ERROR_INSUFFICIENT_BUFFER。lpdwBufferLength指定的字節(jié)數(shù),應(yīng)用程序必須分配給接收字符串。


lpdwIndex [in, out]
指針用于列舉多個(gè)具有同樣名稱的頭一個(gè)從零開始的頭索引。當(dāng)調(diào)用該函數(shù)時(shí),這個(gè)參數(shù)是返回指定的頭的索引。

當(dāng)函數(shù)返回時(shí)。此參數(shù)是該指數(shù)下一個(gè)標(biāo)頭。
假設(shè)無法找到的下一個(gè)索引。則返回ERROR_WINHTTP_HEADER_NOT_FOUND。設(shè)置此參數(shù)WINHTTP_NO_HEADER_INDEX來指定應(yīng)返回的頭,僅僅有第一次出現(xiàn)。

返回值:TRUE or FALSE。

BOOL WINAPI WinHttpQueryOption(
_In_ HINTERNET hInternet,
_In_ DWORD dwOption,
_Out_ LPVOID lpBuffer,
_Inout_ LPDWORD lpdwBufferLength
);
作用:查詢指定的句柄上的“Internet選項(xiàng)”。

參數(shù):
hInternet [in]
HINTERNET句柄上查詢信息。注意,這可能是一個(gè)會(huì)話句柄或請(qǐng)求句柄。這取決于正在查詢的選項(xiàng),選項(xiàng)標(biāo)志主題,以確定該句柄是適當(dāng)?shù)氖褂弥胁樵兲囟ǖ倪x項(xiàng)。

dwOption [in]
無符號(hào)長(zhǎng)整型值,包括的“Internet選項(xiàng)”查詢。

lpBuffer [out]
接收選項(xiàng)設(shè)置的緩沖區(qū)的指針。

返回的字符串的WinHttpQueryOption功能在全球范圍內(nèi)分配的,所以當(dāng)它完畢了使用它的調(diào)用應(yīng)用程序必須在全球范圍釋放該字符串。

將該參數(shù)設(shè)置為NULL,此函數(shù)返回FALSE。
調(diào)用GetLastError,然后返回ERROR_INSUFFICIENT_BUFFER和lpdwBufferLength包括的字節(jié)數(shù)必須持有所要求的信息。

lpdwBufferLength [in, out]
指針指向一個(gè)無符號(hào)長(zhǎng)整型變量,它包括lpBuffer的長(zhǎng)度,以字節(jié)為單位。在函數(shù)返回時(shí)。該變量接收的數(shù)據(jù)放入lpBuffer的長(zhǎng)度。
假設(shè)GetLastError返回ERROR_INSUFFICIENT_BUFFER的,這個(gè)參數(shù)接收的字節(jié)數(shù)必須持有所要求的信息。

返回值:TRUE or FALSE。

BOOL WINAPI WinHttpReadData(
_In_ HINTERNET hRequest,
_Out_ LPVOID lpBuffer,
_In_ DWORD dwNumberOfBytesToRead,
_Out_ LPDWORD lpdwNumberOfBytesRead
);
作用:讀取返回的數(shù)據(jù)。
能數(shù):
hRequest [in]
調(diào)用WinHttpOpenRequest返回的句柄。
在調(diào)用該函數(shù)之前,必須先調(diào)用 WinHttpOpenRequest和WinHttpReceiveResponse 或者 WinHttpQueryDataAvailable函數(shù)。

lpBuffer [out]
接收數(shù)據(jù)的緩沖區(qū)。

dwNumberOfBytesToRead [in]
緩沖區(qū)大小長(zhǎng)度。

lpdwNumberOfBytesRead [out]
傳出接收的字節(jié)數(shù)。假設(shè)設(shè)置為NULL。則調(diào)用回調(diào)函數(shù)進(jìn)行讀取。

返回值:TRUE or FALSE。

BOOL WINAPI WinHttpReceiveResponse(
_In_ HINTERNET hRequest,
_Reserved_ LPVOID lpReserved
);
作用:
參數(shù):
hRequest [in]
通過調(diào)用WinHttpOpenRequest且調(diào)用WinHttpSendRequest返回的句柄 等待WinHttpSendRequest發(fā)送完畢時(shí)調(diào)用WinHttpReceiveResponse。

lpReserved [in]
預(yù)留參數(shù)。設(shè)置為NULL。

返回值:TRUE or FALSE
err code:
ERROR_WINHTTP_CANNOT_CONNECTserver連接失敗。
ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW
ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED請(qǐng)求須要進(jìn)行授權(quán)認(rèn)證。
ERROR_WINHTTP_CONNECTION_ERRORserver重置或關(guān)閉或SSL不兼容。
ERROR_WINHTTP_HEADER_COUNT_EXCEEDED
ERROR_WINHTTP_HEADER_SIZE_OVERFLOW調(diào)用 WinHttpReceiveResponse 溢出。

ERROR_WINHTTP_INCORRECT_HANDLE_STATE
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_WINHTTP_INVALID_SERVER_RESPONSE
ERROR_WINHTTP_INVALID_URL
ERROR_WINHTTP_LOGIN_FAILURE
ERROR_WINHTTP_NAME_NOT_RESOLVED
ERROR_WINHTTP_OPERATION_CANCELLED
ERROR_WINHTTP_REDIRECT_FAILED
ERROR_WINHTTP_RESEND_REQUEST
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
ERROR_WINHTTP_SECURE_FAILURESSL認(rèn)證失敗。
ERROR_WINHTTP_TIMEOUT
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
ERROR_NOT_ENOUGH_MEMORY

DWORD WinHttpResetAutoProxy(
_In_ HINTERNET hSession,
_In_ DWORD dwFlags
);
作用:重置自己主動(dòng)代理
參數(shù):
hSession [in]
調(diào)用WinHttpOpen返回的句柄。

dwFlags [in]
重置標(biāo)志位,取值:
WINHTTP_RESET_SCRIPT_CACHE刷新持久的HTTP緩存的代理腳本。
WINHTTP_WRAPPER_RESET_STATE強(qiáng)制重試網(wǎng)絡(luò)代理信息。
NHTTP_RESET_OUT_OF_PROC須要關(guān)閉使用WinHttpGetProxyForUrl過程中的緩存須要清除HINTERNET句柄。

返回值:
ERROR_SUCCESS重置成功。
ERROR_INVALID_HANDLEhSession句柄無效。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPEhSession不是由WinHttpOpen返回。

BOOL WINAPI WinHttpSendRequest(
_In_ HINTERNET hRequest,
_In_opt_ LPCWSTR pwszHeaders,
_In_ DWORD dwHeadersLength,
_In_opt_ LPVOID lpOptional,
_In_ DWORD dwOptionalLength,
_In_ DWORD dwTotalLength,
_In_ DWORD_PTR dwContext
);
作用:發(fā)送請(qǐng)求數(shù)據(jù)。

參數(shù):
hRequest [in]
調(diào)用WinHttpOpenRequest返回的句柄。

pwszHeaders [in, optional]
HTTP請(qǐng)求頭域,假設(shè)不須要額外的頭域,能夠設(shè)置為:WINHTTP_NO_ADDITIONAL_HEADERS

dwHeadersLength [in]
頭域的長(zhǎng)度。假設(shè)設(shè)置為-1L則,將以字符"/0"結(jié)束來計(jì)算頭域的長(zhǎng)度。

lpOptional [in, optional]
一個(gè)指針,指向一個(gè)緩沖區(qū)。當(dāng)中包括可選的數(shù)據(jù)發(fā)送后。馬上請(qǐng)求標(biāo)頭。

該參數(shù)通經(jīng)常使用于POST和PUT操作。
可選的數(shù)據(jù)能夠被發(fā)送到server的資源或數(shù)據(jù)。假設(shè)沒有可選的數(shù)據(jù)發(fā)送這參數(shù)能夠是WINHTTP_NO_REQUEST_DATA的。

假設(shè)為0,則參數(shù)被忽略。置為NULL。

緩沖區(qū)的生命周期必須在調(diào)用WinHttpReceiveResponse完畢后進(jìn)行關(guān)閉。

dwOptionalLength [in]
假設(shè)沒有數(shù)據(jù)發(fā)送時(shí)。設(shè)置為0。
假設(shè)lpOptional不為空時(shí),則這個(gè)值必須有意義。否則將被忽略變?yōu)镹ULL。

dwTotalLength [in]
無符號(hào)長(zhǎng)整型值,包括的總發(fā)送的數(shù)據(jù)的長(zhǎng)度,以字節(jié)為單位。此參數(shù)指定Content-Length頭的要求。
假設(shè)這個(gè)參數(shù)的值是大于由dwOptionalLength指定的長(zhǎng)度。然后WinHttpWriteData能夠用于發(fā)送額外的數(shù)據(jù)。

dwContext [in]
一個(gè)指針變量。它包括一個(gè)應(yīng)用程序定義的值傳遞,請(qǐng)求句柄,不論什么回調(diào)函數(shù)的指針。

返回值:TRUE or FALSE
err code:
ERROR_WINHTTP_CANNOT_CONNECT
ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED
ERROR_WINHTTP_CONNECTION_ERROR
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_WINHTTP_INVALID_URL
ERROR_WINHTTP_LOGIN_FAILURE
ERROR_WINHTTP_NAME_NOT_RESOLVED
ERROR_WINHTTP_OPERATION_CANCELLED
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
ERROR_WINHTTP_SECURE_FAILURE
ERROR_WINHTTP_SHUTDOWN
ERROR_WINHTTP_TIMEOUT
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
ERROR_NOT_ENOUGH_MEMORY
ERROR_INVALID_PARAMETER
ERROR_WINHTTP_RESEND_REQUEST

BOOL WINAPI WinHttpSetCredentials(
_In_ HINTERNET hRequest,
_In_ DWORD AuthTargets,
_In_ DWORD AuthScheme,
_In_ LPCWSTR pwszUserName,
_In_ LPCWSTR pwszPassword,
_Reserved_ LPVOID pAuthParams
);
作用:設(shè)置HTTP請(qǐng)求證書。

參數(shù):
hRequest [in]
調(diào)用WinHttpOpenRequest返回的句柄。

AuthTargets [in]
授權(quán)目標(biāo),取值:
WINHTTP_AUTH_TARGET_SERVERserver授權(quán)
WINHTTP_AUTH_TARGET_PROXY代理授權(quán)

AuthScheme [in]
認(rèn)證方式,通過 WinHttpQueryAuthSchemes能夠得到支持哪些認(rèn)證方式。
通常有:
WINHTTP_AUTH_SCHEME_BASICBASIC認(rèn)證方式。

WINHTTP_AUTH_SCHEME_NTLMNTLM認(rèn)證方式。
WINHTTP_AUTH_SCHEME_PASSPORTPASSPORT認(rèn)證方式。
WINHTTP_AUTH_SCHEME_DIGESTDIGEST認(rèn)證方式。

WINHTTP_AUTH_SCHEME_NEGOTIATE在NTLM , Kerberos之間的認(rèn)證方式。

pwszUserName [in]
證書的username

pwszPassword [in]
證書的password

pAuthParams [in]
保留參數(shù),設(shè)置為NULL。

返回值:TRUE or FALSE
err code:
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_NOT_ENOUGH_MEMORY

BOOL WINAPI WinHttpSetDefaultProxyConfiguration(
_In_ WINHTTP_PROXY_INFO *pProxyInfo
);
作用:設(shè)置默認(rèn)代理配置。

參數(shù):
pProxyInfo [in]
一個(gè)指向WINHTTP_PROXY_INFO的結(jié)構(gòu)體指針。

返回值:TRUE or FALSE
err code:
ERROR_WINHTTP_INTERNAL_ERROR
ERROR_NOT_ENOUGH_MEMORY

BOOL WINAPI WinHttpSetOption(
_In_ HINTERNET hInternet,
_In_ DWORD dwOption,
_In_ LPVOID lpBuffer,
_In_ DWORD dwBufferLength
);
作用:IE選項(xiàng)設(shè)置。
參數(shù):
hInternet [in]
會(huì)話或請(qǐng)求句柄。

dwOption [in]
IE選項(xiàng)。值參考: Option Flags 。

lpBuffer [in]
選項(xiàng)緩沖區(qū)。

dwBufferLength [in]
無符號(hào)長(zhǎng)整型值。包括lpBuffer緩沖區(qū)的長(zhǎng)度。

下列選項(xiàng)中指定的字符緩沖區(qū)的長(zhǎng)度;全部其它選項(xiàng),指定的長(zhǎng)度(以字節(jié)為單位)。

返回值:TRUE or FALSE

WINHTTP_STATUS_CALLBACK WINAPI WinHttpSetStatusCallback(
_In_ HINTERNET hInternet,
_In_ WINHTTP_STATUS_CALLBACK lpfnInternetCallback,
_In_ DWORD dwNotificationFlags,
_Reserved_ DWORD_PTR dwReserved
);
作用:設(shè)置回調(diào)函數(shù)來得到請(qǐng)求狀態(tài)。
參數(shù):
hInternet [in]
須要設(shè)置回調(diào)函數(shù)的句柄。

lpfnInternetCallback [in]
回調(diào)函數(shù)指針。假設(shè)設(shè)置為NULL。則不使用回調(diào)。

回調(diào)函數(shù)聲明參考WINHTTP_STATUS_CALLBACK

typedef void ( CALLBACK *WINHTTP_STATUS_CALLBACK)(
_In_ HINTERNET hInternet,
_In_ DWORD_PTR dwContext,
_In_ DWORD dwInternetStatus,
_In_ LPVOID lpvStatusInformation,
_In_ DWORD dwStatusInformationLength
);

dwNotificationFlags [in]
回調(diào)函數(shù)事件通知標(biāo)識(shí)。
取值:
WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS不論什么處理完畢的通知。

WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS不論什么狀態(tài)改變時(shí)激活通知。
WINHTTP_CALLBACK_FLAG_RESOLVE_NAME解釋名稱完畢時(shí)激活通知。

WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER當(dāng)連接到服務(wù)時(shí)激活該通知。
WINHTTP_CALLBACK_FLAG_DETECTING_PROXY當(dāng)檢測(cè)到server時(shí)激活該通知。
WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE當(dāng)獲到數(shù)據(jù)時(shí)激知該通知。
WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE當(dāng)返回響應(yīng)頭時(shí)激活該通知。
WINHTTP_CALLBACK_FLAG_READ_COMPLETE當(dāng)數(shù)據(jù)讀取完畢時(shí)激活通知。
WINHTTP_CALLBACK_FLAG_REQUEST_ERROR當(dāng)異步操作請(qǐng)求錯(cuò)誤時(shí)激活通知。
WINHTTP_CALLBACK_FLAG_SEND_REQUEST當(dāng)通過調(diào)用WinHttpSendRequest開始發(fā)送時(shí)激活該通知。
WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE當(dāng)通過調(diào)用WinHttpSendRequest發(fā)送完畢時(shí)激活該通知。

WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE當(dāng)POST數(shù)據(jù)操作完畢時(shí)激活該通知。
WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE當(dāng)Response響應(yīng)接收資源時(shí)激活該通知。
WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION當(dāng)正在關(guān)閉連接時(shí)激活該通知。

WINHTTP_CALLBACK_FLAG_HANDLES當(dāng)HTTP連接創(chuàng)建或關(guān)閉時(shí)激活通知。
WINHTTP_CALLBACK_FLAG_REDIRECT當(dāng)請(qǐng)求重定向時(shí)激活通知。
WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE當(dāng)接收到一個(gè)來自server的消息中間狀態(tài)代碼(100level)時(shí)激活通知。

WINHTTP_CALLBACK_FLAG_SECURE_FAILURE當(dāng)證書認(rèn)證失敗時(shí)激活該通知。

dwReserved [in]
保留參數(shù),設(shè)置為NULL。

返回值:
假設(shè)調(diào)用成功則返回CALLBACK的函數(shù)指針。假設(shè)失敗返回WINHTTP_INVALID_STATUS_CALLBACK。則調(diào)用getlasterror來查詢信息。

BOOL WINAPI WinHttpSetTimeouts(
_In_ HINTERNET hInternet,
_In_ int dwResolveTimeout,
_In_ int dwConnectTimeout,
_In_ int dwSendTimeout,
_In_ int dwReceiveTimeout
);
作用:設(shè)置HTTP請(qǐng)求超時(shí)。

參數(shù):
hInternet [in]
通過WinHttpOpen 或 WinHttpOpenRequest返回的句柄。

dwResolveTimeout [in]
設(shè)置處理請(qǐng)求超時(shí)時(shí)間,以毫秒為單位。假設(shè)為0,表示不使用超時(shí)。

Windows Vista和Windows XP:假設(shè)DNS超時(shí)時(shí)間使用NAME_RESOLUTION_TIMEOUT指定的,是每一個(gè)請(qǐng)求一個(gè)線程的開銷。

dwConnectTimeout [in]
設(shè)置連接超時(shí)時(shí)間,以毫秒為單位,默覺得60秒。

dwSendTimeout [in]
設(shè)置發(fā)送請(qǐng)求的超時(shí)時(shí)間,默覺得30秒。

dwReceiveTimeout [in]
設(shè)置響應(yīng)接收的超時(shí)時(shí)間,默覺得30秒。

返回值:TRUE or FALSE

BOOL WINAPI WinHttpTimeFromSystemTime(
_In_ const SYSTEMTIME *pst,
_Out_ LPWSTR pwszTime
);
作用:格式化系統(tǒng)時(shí)間。

參數(shù):
pst [in]
指向SYSTEMTIME 結(jié)構(gòu)的指針。

pwszTime [out]
緩沖區(qū)。緩沖區(qū)的大小與WINHTTP_TIME_FORMAT_BUFSIZE相等。

返回值:TRUE or FALSE

BOOL WINAPI WinHttpTimeToSystemTime(
_In_ LPCWSTR pwszTime,
_Out_ SYSTEMTIME *pst
);
作用:將本地時(shí)間轉(zhuǎn)為系統(tǒng)時(shí)間。
參數(shù):
pwszTime [in]
指向一個(gè)時(shí)間格式的字符串, 這個(gè)時(shí)間格式必須符合RFC2616中的3.3章節(jié)中的格式。

pst [out]
指向轉(zhuǎn)換后的系統(tǒng)時(shí)間SYSTEMTIME結(jié)構(gòu)指針。

返回值:TRUE or FALSE

BOOL WINAPI WinHttpWriteData(
_In_ HINTERNET hRequest,
_In_ LPCVOID lpBuffer,
_In_ DWORD dwNumberOfBytesToWrite,
_Out_ LPDWORD lpdwNumberOfBytesWritten
);
作用:寫內(nèi)存數(shù)據(jù)。
參數(shù):
hRequest [in]
調(diào)用WinHttpOpenRequest返回的句柄。 在調(diào)用該方法前必須等待函數(shù) WinHttpSendRequest 調(diào)用完畢。

lpBuffer [in]
發(fā)送到server的BUFFER數(shù)據(jù),確保數(shù)據(jù)的有效性必須直到WinHttpWriteData調(diào)用完畢。

dwNumberOfBytesToWrite [in]
須要寫入的數(shù)據(jù)長(zhǎng)度。

lpdwNumberOfBytesWritten [out]
寫完畢的buffer大小,假設(shè)設(shè)置為NULL,則使用異步的方式時(shí)須要在回調(diào)中進(jìn)行寫入。

返回值:TRUE or FALSE

DWORD WINAPI WinHttpWebSocketClose(
_In_ HINTERNET hWebSocket,
_In_ USHORT usStatus,
_In_opt_ PVOID pvReason,
_In_ DWORD dwReasonLength
);
作用:關(guān)閉WEB 的SOCKET
參數(shù):
hWebSocket [in]
web socket句柄。注:假設(shè)調(diào)用了WinHttpCloseHandle來關(guān)閉該句柄,則不用再次調(diào)用該函數(shù)來關(guān)閉。

usStatus [in]
狀態(tài)代碼。見 WINHTTP_WEB_SOCKET_CLOSE_STATUS 中的詳細(xì)值。

pvReason [in, optional]
具體的關(guān)閉原因。

dwReasonLength [in]
原因內(nèi)容的長(zhǎng)度。假設(shè)為0。則大為小0-123 即124長(zhǎng)度。

HINTERNET WINAPI WinHttpWebSocketCompleteUpgrade(
_In_ HINTERNET hRequest,
_In_opt_ DWORD_PTR pContext
);
作用:WEBSOCKET更新完畢。

hRequest [in]
http 請(qǐng)求句柄。

pContext [in, optional]
上下文關(guān)聯(lián)的新句柄。

返回值:
返回新的WebSocket句柄。

DWORD WINAPI WinHttpWebSocketQueryCloseStatus(
_In_ HINTERNET hWebSocket,
_Out_ USHORT *pusStatus,
_Out_ PVOID pvReason,
_In_ DWORD dwReasonLength,
_Out_ DWORD *pdwReasonLengthConsumed
);
作用:WEBSOCKET關(guān)閉狀態(tài)查詢。
參數(shù):
hWebSocket [in]
WebSocket句柄。

pusStatus [out]
狀態(tài)碼,見WINHTTP_WEB_SOCKET_CLOSE_STATUS列表中的值。

pvReason [out]
關(guān)閉的原因。

dwReasonLength [in]
原因內(nèi)容的長(zhǎng)度。

pdwReasonLengthConsumed [out]
假設(shè)pvReason為空且dwReasonLength為0,則此值將包括由調(diào)用應(yīng)用程序須要分配的緩沖區(qū)的大小。

返回值:
假設(shè)成功返回NO_ERROR 。
假設(shè)失敗返回:
ERROR_INSUFFICIENT_BUFFER
ERROR_INVALID_OPERATION
ERROR_INVALID_PARAMETER

DWORD WINAPI WinHttpWebSocketReceive(
_In_ HINTERNET hWebSocket,
_Out_ PVOID pvBuffer,
_In_ DWORD dwBufferLength,
_Out_ DWORD *pdwBytesRead,
_Out_ WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType
);
作用:接收數(shù)據(jù)。

參數(shù):
hWebSocket [in]
WebSocket句柄。

pvBuffer [out]
接收數(shù)據(jù)的緩沖區(qū)。

dwBufferLength [in]
緩沖區(qū)長(zhǎng)度。

pdwBytesRead [out]
讀取數(shù)據(jù)操作,假設(shè)調(diào)用WinHttpWebSocketReceive 返回NO_ERROR 且句柄為同步模式。

peBufferType [out]
緩沖區(qū)指針,這個(gè)設(shè)置僅僅有當(dāng)WinHttpWebSocketReceive 同步模式開啟且返回NO_ERROR 時(shí)才有值。

返回值:
成功調(diào)用返回NO_ERROR
失敗調(diào)用返回錯(cuò)誤碼:
ERROR_INVALID_OPERATION操作無效。


ERROR_INVALID_PARAMETER參數(shù)無效。
ERROR_INVALID_SERVER_RESPONSEserver響應(yīng)無效。
ERROR_WINHTTP_OPERATION_CANCELLED操作被取消。

DWORD WINAPI WinHttpWebSocketSend(
_In_ HINTERNET hWebSocket,
_In_ WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType,
_In_ PVOID pvBuffer,
_In_ DWORD dwBufferLength
);
作用:發(fā)送數(shù)據(jù)。
參數(shù):
hWebSocket [in]
websocket句柄。

eBufferType [in]
緩沖區(qū)類型。假設(shè)不指定WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE,用戶須要使用WinHttpWebSocketClose或WinHttpWebSocketShutdown進(jìn)行關(guān)閉連接。

pvBuffer [in]
發(fā)送緩沖區(qū)。當(dāng)dwBufferLength為0時(shí),能夠設(shè)置為NULL。

dwBufferLength [in]
緩沖區(qū)的長(zhǎng)度。

返回值:
成功返回NO_ERROR
失敗返回
ERROR_INVALID_OPERATION操作無效。

ERROR_INVALID_PARAMETER參數(shù)無效。

DWORD WINAPI WinHttpWebSocketShutdown(
_In_ HINTERNET hWebSocket,
_In_ USHORT usStatus,
_In_opt_ PVOID pvReason,
_In_ DWORD dwReasonLength
);
作用:關(guān)閉SOCKET。
參數(shù):
hWebSocket [in]
WebSocket句柄。

usStatus [in]
參見WINHTTP_WEB_SOCKET_CLOSE_STATUS列表。

pvReason [in, optional]
shutdown的原因。

dwReasonLength [in]
shutdown原因的內(nèi)容長(zhǎng)度。
假設(shè)填為NULL。則默信為0-123

返回值:
全部的錯(cuò)誤代碼表明,底層的TCP連接已中斷。

ERROR_IO_PENDING操作將異步完畢。

參考:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384257(v=vs.85).aspx

總結(jié)

以上是生活随笔為你收集整理的WINHTTP的API接口说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。