公司网站建设模板下载,泸州市住房和城乡建设网站,钓鱼网站实施过程,广告设计一般用什么软件Microsoft.XMLHttp组件的属性方法
一、使用步骤#xff1a;
1、创建XMLHTTP对象 //需MSXML4.0支持 2、打开与服务端的连接#xff0c;同时定义指令发送方式#xff0c;服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样…Microsoft.XMLHttp组件的属性方法
一、使用步骤
1、创建XMLHTTP对象 //需MSXML4.0支持 2、打开与服务端的连接同时定义指令发送方式服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样可以用GET方法或POST方法指向服务端的服务网页。 3、发送指令。 4、等待并接收服务端返回的处理结果。 5、释放XMLHTTP对象
二、XMLHTTP方法
Open bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword
bstrMethod 数据传送方式即GET或POST。 bstrUrl 服务网页的URL。 varAsync 是否同步执行。缺省为True即同步执行但只能在DOM中实施同步执行。一般将其置为False即异步执行。 bstrUser 用户名可省略。 bstrPassword用户口令可省略。
Send varBody
varBody指令集。可以是XML格式数据也可以是字符串流或者一个无符号整数数组。也可以省略让指令通过Open方法的URL参数代入。
setRequestHeader bstrHeader, bstrvalue
bstrHeaderHTTP 头(header) bstrvalue HTTP 头(header)的值 如果Open方法定义为POST可以定义表单方式上传 xmlhttp.setRequestHeader “Content-Type”, “application/x-www-form-urlencoded”
三、XMLHTTP属性
onreadystatechange在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。 responseBody 结果返回为无符号整数数组。 responseStream 结果返回为IStream流。 responseText 结果返回为字符串。 responseXML 结果返回为XML格式数据。
四、具体的使用方法
创建XMLHTTP对象的语句如下 OleObject lole_get_https //声明ole lole_get_https CREATE oleobject long llr //llr lole_get_https.ConnectToNewObject(“Microsoft.XMLHttp”) //帮顶XMLhttp组件xp和win7、win10都自带不需安装任何辅助软件如.net环境 llr lole_get_https.ConnectToNewObject(“MSXML2.ServerXMLHTTP”)
lole_get_https.open (“GET”,ls_url, false) //Get方法同步 /* Open方法中包含了5个参数前三个是必要的后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示
http-methodHTTP的通信方式比如GET或是POST url接收XML数据的服务器的URL地址。通常在URL中要指明ASP或CGI程序 async一个布尔标识说明请求是否为异步的。如果是异步通信方式(true)客户机就不等待服务器的响应如果是同步方式(false)客户机就要等到服务器返回消息后才去执行其他操作 userID用户ID用于服务器身份验证 password用户密码用于服务器身份验证 */ lole_get_https.setRequestHeader (“Content-type”, “application/x-www-form-urlencoded”) //lole_get_https.setRequestHeader (“Content-type”, “text/html”)
lole_get_https.setRequestHeader(‘Content-Length’,string(len(ls_data)))
lole_get_https.send (ls_data) /* XMLHTTP对象的Send方法 用Open方法对Request对象进行初始化后调用Send方法发送XML数据 lole_get_https.send() Send方法的参数类型是Variant可以是字符串、DOM树或任意数据流。
发送数据的方式分为同步和异步两种。在异步方式下数据包一旦发送完毕就结束Send进程客户机执行其他的操作而在同步方式下客户机要等到服务器返回确认消息后才结束Send进程。 */ XMLHTTP对象中的readyState属性
其能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示
值 说明 0 Response对象已经创建但XML文档上载过程尚未结束 1 XML文档已经装载完毕 2 XML文档已经装载完毕正在处理中 3 部分XML文档已经解析 4 文档已经解析完毕客户端可以接受返回消息
客户机处理响应信息客户机接收到返回消息后进行简单的处理基本上就完成了C/S之间的一个交互周期。
客户机接收响应是通过XMLHTTP对象的属性实现的
responseText将返回消息作为文本字符串 responseBody将返回消息作为HTML文档内容 responseXML将返回消息视为XML文档在服务器响应消息中含有XML数据时使用 responseStream将返回消息视为Stream对象
五、PB8下封装的一个全局函数
global type gf_get_https from function_object
end typeforward prototypes
global function string gf_get_https (string as_url, string as_data)
end prototypesglobal function string gf_get_https (string as_url, string as_data);// 用Microsoft.XMLHttp组件GET同步方法爬取https网页 by 白龙马 22-05-21/* 调用参数示例
String ls_url,ls_data,ls_response
ls_url https://datacenter-web.eastmoney.com/api/data/v1/get?
ls_data callbackjQuery11230903969942572268_1651624511350sortColumnsUPDATE_DATE,SECURITY_CODEsortTypes-1,-1pageSize50pageNumber1reportNameRPT_LICO_FN_CPDcolumnsALLfilter(REPORTDATE2023-09-30)
*/String ls_url,ls_data,ls_response//采用https的URL
ls_url as_url
ls_data as_data OleObject lole_get_https //声明ole
lole_get_https CREATE oleobject long llr
llr lole_get_https.ConnectToNewObject(Microsoft.XMLHttp) //帮顶XMLhttp组件xp和win7、win10都自带不需安装任何辅助软件如.net环境
//llr lole_get_https.ConnectToNewObject(MSXML2.ServerXMLHTTP)
//llr lole_get_https.ConnectToNewObject(MSXML2.XMLHTTP) lole_get_https.open (GET,ls_url, false) //Get方法同步lole_get_https.setRequestHeader (Content-type, application/x-www-form-urlencoded)
//lole_get_https.setRequestHeader (Content-type, text/html)lole_get_https.setRequestHeader(Content-Length,string(len(ls_data)))lole_get_https.send(ls_data) /*
关键是这一步如果你的https的环境没有安装浏览器的认证的根证书一定会报错退出
如果你申请安装了verisign等权威机构发的根证书用ie打开上面的https就不会报红色警告问你是不是继续。
但pb不会提示你是不是继续直接报错退出。verisign的证书一年好像要1万-10万元的服务费。在这里你如果想测试一下
你可以把上面的https地址换成https://www.alipay.com/ (支付宝的)不会报错的。注意这里的证书及验证都是单向验证不是双向的。
*/
ls_response lole_get_https.responseText //返回结果//messagebox(responseText,ls_response) IF lole_get_https.Status 300 THEN MessageBox (HTTPs request failed:, string(lole_get_https.StatusText))
END IF //销毁 ole
destroy lole_get_https
return ls_response
end function六 爬取上市公司主要财务数据示例
String ls_url,ls_data,ls_response
ls_url https://datacenter-web.eastmoney.com/api/data/v1/get?
ls_data callbackjQuery11230903969942572268_1651624511350sortColumnsUPDATE_DATE,SECURITY_CODEsortTypes-1,-1pageSize50pageNumber1reportNameRPT_LICO_FN_CPDcolumnsALLfilter(REPORTDATE2023-09-30)
ls_response gf_get_https(ls_url,ls_data)