inet.http 与 inet.whttp 用法与接口基本相同,一般可相互替代。
普通桌面客户端软件(非NT服务)请使用 inet.http(WinINet) 而不应该使用 inet.whttp(WinHTTP)。 inet.whttp 并非象 inet.http 那样可以获取 IE 的默认代理设置,也不受 inet.setProxy 函数的影响,
inet.whttp 的默认代理需要使用函数 WinHttpSetDefaultProxyConfiguration 修改,而调用这个 API 则需要管理权限,
您可以在创建 inet.whttp 对象时指定代理服务器参数为"IE",aardio 将自动获取IE代理设置。 WinHTTP 错误代码说明
https://docs.microsoft.com/zh-cn/windows/win32/winhttp/error-messages
说明
所有参数可以省略,
UserAgent参数指定发送给服务器的程序名,
代理指定空字符串为使用默认代理,如果代理设为"IE"则使用IE以及inet.setProxy的代理设置
WinHTTP支持库
多对象会话cookie隔离不共享,不支持持久化cookie
不与浏览器控件等共享cookie与代理设置,
支持NT服务
创建HTTP会话对象,所有参数可选,
注意提前导入zlib库,readAll 函数才能支持 gzip 自动解压。
用于界面线程创建线程并获取 @url 指定网址的数据,
此函数等待下载完成但不会阻塞界面消息循环,
可选用 @headers 指定 HTTP 头,
可选用 @referer 指定引用网址,
所有参数用法与 格式请参考 inet.whttp 对象的 get 函数相同
修改默认代理设置,进程有效
whttp自动获取inet.setProxy或IE代理服务器设置,进程有效
使用WinHTTP的系统默认代理设置
可用API:WinHttpSetDefaultProxyConfiguration修改设置,需管理权限
whttp默认禁用代理,进程有效
对 @url 指定网址发送请求并返回 HTTP 状态码。
如果未成功发送请求则返回 null。
可选参数 @noAutoRedirect 为 true 则禁止自动重定向,默认为 false。
可选用 @httpMethod 参数指定 HTTP 请求方法,默认为 "HEAD"。
大部分网址请求成功会返回 200 状态码。
部分网址会返回 2xx 状态码,重定向返回 3xx 状态码。
可用状态码请参考 inet.httpStatusCode 库
创建 inet.whttp 对象且未明确指定 user agent 参数时使用的默认值
inetWhttpObject._defaultRequestErrHandle[12175/*_ERROR_WINHTTP_SECURE_FAILURE*/ ] = function() {
owner.setRequestOption(0x1F/*_WINHTTP_OPTION_SECURITY_FLAGS*/,0x1000|0x2000|0x100|0x200);
return true;/*添加 HTTP 请求错误处理程序,已清除错误并允许重试请返回 true */
}
指定可选择的文件类型
默认无需指定,也可以在参数中指定
设置所有请求默认添加的HTTP头
请求结束时不会清空此属性
该值可以是 web.joinHeaders 函数支持的字符串、表(数组、键值对)
inetWhttpObject.afterSend = function(statusCode,contentLength){
/*向服务器发送数据结束触发此回调函数
如果在这里读取全部HTTP头则会自动保存到 inetWhttpObject.responseHeaders属性
即使结束请求所有读取HTTP头的函数将继续有效*/
owner.readHeader();
}
inetWhttpObject.beforeSend = function(){
/*已准备向服务器发送数据触发此回调函数*/
}
打开连接并准备发送请求
除URL以外,所有参数可选
method参数指定HTTP请求方法,
referer参数指定引用页,默认使用上一次访问的网址作为下一次的引用网址
accept指定客户端接受的MIME内容类型,参考HTTP请求头该字段说明
flags参数用于指定请求选项,
connectFlags用于指定调打开连接选项,
flags,connectFlags一般用不到,详细的用法请参考此函数源码以及相关API文档
发送请求,参数为待上传的数据总长度,默认为0
失败返回:null,错误信息,错误代码
默认缓冲区大小
默认根据下载速度自动调整该大小
上传数据总长度
即beginSendData()参数传入的数值
释放资源
whttp对象支持自动析构,即使不调用此函数资源也会自动释放
设置post函数上传参数为表并转换为字符串时UrlEncode的输出代码页
指定打开服务端连接的默认选项
此选项一般用户不需要了解,如果需要请参考beginRequest函数的源码以及相关API文档
send()函数执行后返回的文件长度
禁用指定功能
必须在beginRequest()之后调用
强制刷新
禁止自动添加、管理cookie的功能,
需要自行在HTTP请求头、响应头中分析处理cookie
禁止重定向
发送请求并下载数据,get,post等调用此函数
不建议直接调用此函数,参数:
url:网址,除这个参数必须指定以外,后面其他参数都是可选参数
postdata:提交数据
headers:http头,可以是web.joinHeaders支持的字符串、键值对、数组等格式
referer:http引用网址,默认使用上一次访问的网址作为下一次的引用网址
accept: 此参数用于HTTP请求头accept字段,用于指定可识别的内容类型列表
flags: 用于设置请求选项,参考beginRequest函数说明
connectFlags:用于打开连接选项,参考beginRequest函数说明
noReceiveData: 指定为真则不下载服务器回应数据
本地内部错误返回值为:null,错误信息,错误代码
服务端返回HTTP错误时返回值为:false,错误信息,HTTP错误代码
成功返回字符串对象
for(str,size in inetWhttpObject.eachLine() ){
/*每次读取一行数据,忽略回车,去掉换行符*/
}
for(str,size in inetWhttpObject.eachRead() ){
/*循环读取数据,可选在 eachRead 的参数@1 指定缓冲区大小*/
}
var buffer = .raw.bufferc( 1024 * 10 );
for( size in inetWhttpObject.eachReadBuffer( buffer ) ){
}
关闭请求,与beginRequest配对使用.
wirte()函数写完所有上传数据以后,
必须调用此函数结束上传,
成功返回: true,状态码,文件长度
出错返回:null,错误信息,错误代码
inetWhttpObject.flags = _WINHTTP_FLAG_/*
指定打开网址请求的默认选项
此选项一般用户不需要了解,
请参考beginRequest函数的源码以及相关API文档
*/
向服务器发送GET请求并下载服务器返回的数据,
此函数会顺序调用 beginRequest(), send(),
如果指定了onReceive回调函数,则调用该函数接收数据(成功返回true)
否则,调用readAll()等函数并返回下载数据,
除URL外,其他为可选参数
http头可以是web.joinHeaders支持的字符串、键值对、数组等格式
默认使用上一次访问的网址作为下一次的引用网址
本地内部错误返回值为:null,错误信息,错误代码
服务端返回HTTP错误时返回值为:false,错误信息,HTTP错误代码
成功返回字符串对象
返回HTTP客户端请求HTTP头中用户代理头的值,
该值可在创建HTTP客户端的构造参数中指定
发送 HEAD 请求获取 HTTP 头
此函数不会直接返回 HTTP 头,
但函数返回后可使用 readHeader 函数读取 HTTP 响应头
发送 HEAD 请求获取 HTTP 头
此函数不会直接返回 HTTP 头,
但函数返回后可使用 readHeader 函数读取 HTTP 响应头
除URL外,其他为可选参数
默认使用上一次访问的网址作为下一次的引用网址
本地内部错误返回值为:null,错误信息,错误代码,
服务端返回 HTTP 错误代码时返回值为:false,
成功返回 true
使用指定的请求方法模拟HEAD方法,用于拒绝HEAD请求的网址
除网址以外所有参数可以省略,默认为使用GET方法
设置本次请求的HTTP头
此属性会在每次发送请求以后,接收数据以前,初始化为空值
该值可以是 web.joinHeaders 函数支持的字符串、表(数组、键值对)
最后一次读取数据是否遇到错误,例如网络断开连接等等
最后一次请求成功的URL
获取最后一次服务器返回的原始数据,
仅在调用了readAll函数、或在get,post函数中间接调用readAll函数时设置该值
获取最后一次重定向URL
如果省略url参数,则取最后一次请求成功的网址
如果发生了重定向,返回重定向后的网址
如果不存重定向返回原网址
写入请求 HTTP 头,
参数可以是 web.joinHeaders 函数支持的字符串、表(数组、键值)。
如果存在同名 HTTP 头则合并,
可使用第二个参数指定分隔符为逗号或分号,默认为逗号。
函数执行成功返回 true
必须在 send 发送请求以前调用,
可在 beforeSend 事件内调用
inetWhttpObject.onReceive = function(str,size,contentLength){
/*定义了此函数循环接收数据,则 get,post 等函数返回布尔值*/
}
inetWhttpObject.onReceiveBegin = function(statusCode,contentLength){
if( statusCode == 206 /*断点续传*/ ){
/*该事件函数在接收数据以前触发*/
}
}
inetWhttpObject.onSend = function(remainSize){
/*如果不指定上传数据,send函数会自动调用该函数获取数据直至此函数返回空值为止*/
return str,len;
}
inetWhttpObject.onSendBegin = function(){
return len/*上传长度*/;
}
inetWhttpObject.parseStreamData = function(data){
/*如果 ContentType 响应类型为 text/event-stream,
则 eachRead 与 onReceive 回调会自动调用 parseStreamData 提前转换数据。
如果 ContentType 响应类型为 application/x-ndjson,
则 onReceive 回调会自动调用 parseStreamData 提前转换数据
web.rest.client 会自动设定此回调*/
return data;
}
默认登录密码,
支持 Basic , Digest 认证
向服务器发送POST请求并下载服务器返回的数据,
如果post数据是一个表,则自动调用 inet.url.stringifyParameters 转换为字符串,
此函数会顺序调用 beginRequest(), send(),
如果指定了onReceive回调函数,则调用该函数接收数据(成功返回true)
否则,调用readAll()等函数并返回下载数据,
除URL与post数据以外,其他为可选参数
http头可以是web.joinHeaders支持的字符串、键值对、数组等格式
默认使用上一次访问的网址作为下一次的引用网址
本地内部错误返回值为:null,错误信息,错误代码
服务端返回HTTP错误时返回值为:false,错误信息,HTTP错误代码
成功返回字符串对象
取HTTP头数值
长度参数可选
返回读取字符串,以及长度
该函数必须在send请求以后调用
读取所有返回数据
该函数必须在send请求以后调用
下载文件数据
参数一必须是使用 buffer 对象
长度参数可选,默认为缓冲区长度
获取返回的HTTP头
获取单个指定的 HTTP 服务器响应头,返回字符串。
参数指定HTTP头名字或部分名字,忽略大小写,忽略冒号以后部分。
必须在 send 发送请求以后才能调用此函数。
如果调用 get,post,down 函数可在 afterSend 事件中调用此函数。
默认在请求结束后此函数不可用。
除非调用 head 函数发送请求,或调用 down 函数指定不返回数据,
则请求结束 readHeader 等读取 HTTP 头的函数仍然可用。
如果无参数调用了此函数,则返回全部请求头(以回车换行作为分隔符)。
并且直到下次请求以前,HTTP 响应头都会缓存在 responseHeaders 属性中,
后续就可以自由使用所有读取 HTTP 头的函数
获取服务器返回的 HTTP 响应头,
必须在 send 发送请求以后才能调用此函数。
如果调用 get,post,down 函数可在 afterSend 事件中调用此函数。
默认在请求结束后此函数不可用。
除非调用 head 函数发送请求,或调用 down 函数指定不返回数据,
则请求结束 readHeader 等读取 HTTP 头的函数仍然可用。
如果无参数调用了此函数,则返回全部请求头(以回车换行作为分隔符)。
并且直到下次请求以前,HTTP 响应头都会缓存在 responseHeaders 属性中,
后续就可以自由使用所有读取 HTTP 头的函数
读取HTTP头中文件下载相关信息
该函数在调用send函数以后或afterSend事件中可用
调用head函数发送请求成功以后,则请求结束后该函数仍然可用
获取所有指定字符串作为开始段的 HTTP 头。
忽略大小写,不忽略冒号以后部分。
不指定参数则读取全部响应头。
返回键值对组成的表对象,键名转为小写,每个值都是一个数组。
必须在 send 发送请求以后才能调用此函数。
如果调用 get,post,down 函数可在 afterSend 事件中调用此函数。
默认在请求结束后此函数不可用。
除非调用 head 函数发送请求,或调用 down 函数指定不返回数据,
则请求结束 readHeader 等读取 HTTP 头的函数仍然可用。
如果无参数调用了此函数,则返回全部请求头(以回车换行作为分隔符)。
并且直到下次请求以前,HTTP 响应头都会缓存在 responseHeaders 属性中,
后续就可以自由使用所有读取 HTTP 头的函数
读取HTTP头中断点续传相关验证信息
引用页地址,此属性会自动设置为上次打开的网址
建议在参数中指定
请不要使用 Referer 请求头指定引用地址,
应使用 referer 参数或属性修改引用页
写入请求 HTTP 头,
参数可以是 web.joinHeaders 函数支持的字符串、表(数组、键值)。
如果存在相同的 HTTP 头则覆盖,否则忽略。
函数执行成功返回 true
必须在 send 发送请求以前调用,
可在 beforeSend 事件内调用
应答HTTP头的Content-Encoding值
如果该值为"gzip",通过readAll函数一次读取下载数据时会自动解压,
解压后该值将设为null值
每次发送请求后重置该值为服务器应答Content-Type头
使用该值获取服务器返回的文档类型
无参数调用 readHeader 函数时会保存HTTP头在该属性中
即使在请求结束以后,所有读取HTTP头的函数都可以继续使用
调用head函数发送请求时会自动读取所有HTTP头到该属性中
该属性值每次发送新的请求前会自动清空
HTTPS请求自动忽略无效CN名称
HTTPS请求自动忽略过期证书
HTTPS请求自动忽略无效CA证书
忽略用法不正确的问题
参数可选,调用beginSendData(上传数据),然后调用endSendData()
成功返回: true,状态码,文件长度
出错返回:null,错误信息,错误代码
此函数顺序调用 beginSendData() writeData() endSendData() 发送请求
成功返回: true,状态码,文件长度
出错返回:null,错误信息,错误代码
为当前打开请求设置登录信息
成功返回true
设置代理服务器登录用户名,密码
设置会话选项,
参数可以是数值或结构体
用法参数MSDN
设置会话选项,
参数可以是数值或结构体
用法参数MSDN
设置超时,以亳秒为单位(1秒为1000毫秒)
最后一次发送请求后服务端返回的HTTP状态码
100 ~ 101 为信息提示
200 ~ 206 表示请求成功
300 ~ 305 表示重定向
400 ~ 415 表求客户端请求出错
500 ~ 505 表示服务端错误
注意每次HTTP请求开始该值初始化为空,服务器应答后才会设置该值
默认登录用户名,
支持 Basic , Digest 认证
上传文件数据
参数一必须是使用 buffer 对象
长度参数可选,默认为缓冲区长度.
上传文件数据,支持一个或多个参数,
返回写入数据的总长度,失败返回空或0
调用此函数前必须调用beginSendData()
写完所有数据后 必须调用 endSendData();
写入请求 HTTP 头,
参数可以是 web.joinHeaders 函数支持的字符串、表(数组、键值)。
如果存在相同的 HTTP 头则覆盖,否则添加 HTTP 头。
函数执行成功返回 true
必须在 send 发送请求以前调用,
可在 beforeSend 事件内调用
rangeHeaderInfo使用readHeaderRange()函数读取,
其它参数可选,开始位置默认为0,结束位置默认为文件尾
_SECURITY_FLAG_IGNORE_CERT_CN_INVALID=0x1000
_SECURITY_FLAG_IGNORE_CERT_DATE_INVALID=0x2000
_SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE=0x200
_SECURITY_FLAG_IGNORE_UNKNOWN_CA=0x100
_WINHTTP_ADDREQ_FLAGS_MASK=0xFFFF0000
_WINHTTP_ADDREQ_FLAG_ADD=0x20000000
_WINHTTP_ADDREQ_FLAG_ADD_IF_NEW=0x10000000
_WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA=0x40000000
_WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON=0x1000000
_WINHTTP_ADDREQ_FLAG_REPLACE=0x80000000
_WINHTTP_ADDREQ_INDEX_MASK=0xFFFF
_WINHTTP_AUTH_SCHEME_BASIC=1
_WINHTTP_AUTH_SCHEME_DIGEST=8
_WINHTTP_AUTH_SCHEME_NEGOTIATE=0x10
_WINHTTP_AUTH_SCHEME_NTLM=2
_WINHTTP_AUTH_SCHEME_PASSPORT=4
_WINHTTP_AUTH_TARGET_PROXY=1
_WINHTTP_AUTH_TARGET_SERVER=0
_WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT=0x0
_WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH=0x2
_WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW=0x1
_WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM=0x0
_WINHTTP_CONNS_PER_SERVER_UNLIMITED=0xFFFFFFFF
_WINHTTP_DISABLE_AUTHENTICATION=0x4
_WINHTTP_DISABLE_COOKIES=0x1
_WINHTTP_DISABLE_KEEP_ALIVE=0x8
_WINHTTP_DISABLE_PASSPORT_AUTH=0x0
_WINHTTP_DISABLE_PASSPORT_KEYRING=0x20000000
_WINHTTP_DISABLE_REDIRECTS=0x2
_WINHTTP_DISABLE_SPN_SERVER_PORT=0x0
_WINHTTP_ENABLE_PASSPORT_AUTH=0x10000000
_WINHTTP_ENABLE_PASSPORT_KEYRING=0x40000000
_WINHTTP_ENABLE_SPN_SERVER_PORT=0x1
_WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION=0x2
_WINHTTP_ENABLE_SSL_REVOCATION=0x1
_WINHTTP_FIRST_OPTION=0x1
_WINHTTP_FLAG_BYPASS_PROXY_CACHE=0x100
_WINHTTP_FLAG_ESCAPE_DISABLE=0x40
_WINHTTP_FLAG_ESCAPE_DISABLE_QUERY=0x80
_WINHTTP_FLAG_ESCAPE_PERCENT=0x4
_WINHTTP_FLAG_NULL_CODEPAGE=0x8
_WINHTTP_FLAG_REFRESH=0x100
_WINHTTP_FLAG_SECURE=0x800000
_WINHTTP_LAST_OPTION=0x6C
_WINHTTP_OPTION_AUTOLOGON_POLICY=0x4D
_WINHTTP_OPTION_CALLBACK=0x1
_WINHTTP_OPTION_CLIENT_CERT_CONTEXT=0x2F
_WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST=0x5E
_WINHTTP_OPTION_CODEPAGE=0x44
_WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH=0x53
_WINHTTP_OPTION_CONNECTION_INFO=0x5D
_WINHTTP_OPTION_CONNECT_RETRIES=0x4
_WINHTTP_OPTION_CONNECT_TIMEOUT=0x3
_WINHTTP_OPTION_CONTEXT_VALUE=0x2D
_WINHTTP_OPTION_DISABLE_FEATURE=0x3F
_WINHTTP_OPTION_ENABLETRACING=0x55
_WINHTTP_OPTION_ENABLE_FEATURE=0x4F
_WINHTTP_OPTION_EXTENDED_ERROR=0x18
_WINHTTP_OPTION_GLOBAL_PROXY_CREDS=0x61
_WINHTTP_OPTION_GLOBAL_SERVER_CREDS=0x62
_WINHTTP_OPTION_HANDLE_TYPE=0x9
_WINHTTP_OPTION_HTTP_VERSION=0x3B
_WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE=0x68
_WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER=0x4A
_WINHTTP_OPTION_MAX_CONNS_PER_SERVER=0x49
_WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS=0x59
_WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE=0x5A
_WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE=0x5C
_WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE=0x5B
_WINHTTP_OPTION_PARENT_HANDLE=0x15
_WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT=0x51
_WINHTTP_OPTION_PASSPORT_COBRANDING_URL=0x52
_WINHTTP_OPTION_PASSPORT_RETURN_URL=0x57
_WINHTTP_OPTION_PASSPORT_SIGN_OUT=0x56
_WINHTTP_OPTION_PASSWORD=0x1001
_WINHTTP_OPTION_PROXY=0x26
_WINHTTP_OPTION_PROXY_PASSWORD=0x1003
_WINHTTP_OPTION_PROXY_SPN_USED=0x6B
_WINHTTP_OPTION_PROXY_USERNAME=0x1002
_WINHTTP_OPTION_READ_BUFFER_SIZE=0xC
_WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE=0x67
_WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT=0x7
_WINHTTP_OPTION_RECEIVE_TIMEOUT=0x6
_WINHTTP_OPTION_REDIRECT_POLICY=0x58
_WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS=0x2
_WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT=0x1
_WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP=0x1
_WINHTTP_OPTION_REDIRECT_POLICY_LAST=0x2
_WINHTTP_OPTION_REDIRECT_POLICY_NEVER=0x0
_WINHTTP_OPTION_REJECT_USERPWD_IN_URL=0x64
_WINHTTP_OPTION_REQUEST_PRIORITY=0x3A
_WINHTTP_OPTION_RESOLVE_TIMEOUT=0x2
_WINHTTP_OPTION_SECURE_PROTOCOLS=0x54
_WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT=0x20
_WINHTTP_OPTION_SECURITY_FLAGS=0x1F
_WINHTTP_OPTION_SECURITY_KEY_BITNESS=0x24
_WINHTTP_OPTION_SEND_TIMEOUT=0x5
_WINHTTP_OPTION_SERVER_CBT=0x6C
_WINHTTP_OPTION_SERVER_CERT_CONTEXT=0x4E
_WINHTTP_OPTION_SERVER_SPN_USED=0x6A
_WINHTTP_OPTION_SPN=0x60
_WINHTTP_OPTION_SPN_MASK=0x1
_WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT=0x63
_WINHTTP_OPTION_URL=0x22
_WINHTTP_OPTION_USERNAME=0x1000
_WINHTTP_OPTION_USER_AGENT=0x29
_WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS=0x65
_WINHTTP_OPTION_WORKER_THREAD_COUNT=0x50
_WINHTTP_OPTION_WRITE_BUFFER_SIZE=0xD