【PB续命01】Microsoft.XMLHttp的属性和方法的简介及使用

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 )

bstrHeader:HTTP 头(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-method:HTTP的通信方式,比如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 = "callback=jQuery11230903969942572268_1651624511350&sortColumns=UPDATE_DATE,SECURITY_CODE&sortTypes=-1,-1&pageSize=50&pageNumber=1&reportName=RPT_LICO_FN_CPD&columns=ALL&filter=(REPORTDATE='2023-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 = "callback=jQuery11230903969942572268_1651624511350&sortColumns=UPDATE_DATE,SECURITY_CODE&sortTypes=-1,-1&pageSize=50&pageNumber=1&reportName=RPT_LICO_FN_CPD&columns=ALL&filter=(REPORTDATE='2023-09-30')"
ls_response = gf_get_https(ls_url,ls_data)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 类型和 Java 类型对应关系

在MySQL和Java之间,数据类型有一些映射关系。以下是一些常见的MySQL数据类型和相应的Java数据类型对应关系: MySQL INT 和 Java int: MySQL:INT,TINYINT,SMALLINT,MEDIUMINTJava:int MySQL B…

Day4力扣打卡

打卡记录 同积元组&#xff08;哈希表 排列组合&#xff09; 链接 思路&#xff1a;用哈希表将数组中出现的两不同数乘积依次记录&#xff0c;将出现两次以上的乘积组通过排列组合计算总情况个数。 class Solution { public:int tupleSameProduct(vector<int>& num…

彩虹云商城自助发卡商城-卡卡云主题

彩虹云商城自助发卡商城-卡卡云主题 全新SUP模板/知识付费模板/卡卡云模板&#xff0c;首页美化&#xff0c;登陆页美化修复了pc端显示不正常的问题。 将这俩个数据库文件导入数据库。 其他的直接导入网站根目录覆盖就好。 PS&#xff1a;若首页显示不正常&#xff1a;请去…

MySQL 8 - 能够成功创建其他用户但无法修改 root 用户的密码

问题&#xff1a; 创建其他用户就可以&#xff0c;为什么修改root 密码不可以&#xff1f; 如果能够成功创建其他用户但无法修改 root 用户的密码&#xff0c;这可能是因为 MySQL 8 及更高版本引入了一个名为"caching_sha2_password"的身份验证插件作为默认设置&…

web:[MRCTF2020]Ez_bypass

题目 点进题目 调整一下 进行代码审计&#xff0c;先看第一段 if(isset($_GET[gg])&&isset($_GET[id])) {$id$_GET[id];$gg$_GET[gg];if (md5($id) md5($gg) && $id ! $gg) {echo You got the first step; get参数传参&#xff0c;后判断md5后的值是否相等&…

easyphoto 妙鸭相机

AIGC专栏7——EasyPhoto 人像训练与生成原理详解-CSDN博客如何训练一个高品质的人像Lora与应用高品质Lora的链路对于写真生成而言非常重要。由《LoRA: Low-Rank Adaptation of Large Language Models》 提出的一种基于低秩矩阵的对大参数模型进行少量参数微调训练的方法&#x…

基于Spring boot轻松实现一个多数据源框架

Spring Boot 提供了 Data JPA 的包&#xff0c;允许你使用类似 ORM 的接口连接到 RDMS。它很容易使用和实现&#xff0c;只需要在 pom.xml 中添加一个条目&#xff08;如果使用的是 Maven&#xff0c;Gradle 则是在 build.gradle 文件中&#xff09;。 <dependencies>&l…

基于labview滑动轴承压力测量软件搭建

目录 摘 要... 3 第一章 绪论... 5 1.1滑动轴承压力测量的课题研究背景... 5 1.2 滑动轴承国内外研究现状... 6 1.3 课题的研究内容及章节安排... 7 1.4 本章小结... 7 第二章 虚拟仪器与labview软件设计... 7 2.1 虚拟仪器技术的产生和发展... 7 2.2 l…

Spark Streaming 整合 Kafka

本文代码链接:https://download.csdn.net/download/shangjg03/88442308 1.版本说明 Spark 针对 Kafka 的不同版本,提供了两套整合方案:`spark-streaming-kafka-0-8` 和 `spark-streaming-kafka-0-10`,其主要区别如下: 本文使用的 Kafka 版本为 `kafka_2.12-2.2.0`,故采用…

【机器学习】随机种子Random Seed介绍(在Python、Pytorch、TensorFlow中的设置代码汇总)

Random seed&#xff08;随机种子&#xff09; 是在生成随机数时使用的起始点。它用于控制随机数生成器产生随机数的序列。设置了随机种子后&#xff0c;每次生成的随机数序列将是确定性的&#xff0c;这意味着可以在不同的运行中获得相同的随机数序列&#xff0c;从而使实验可…

C语言基于AVL树实现简单的文件数据库

目录 前言一、设计思路二、文件存储格式三、数据库操作3.1. 数据库结构3.2. 数据库初始化3.3. 插入3.4. 删除3.5. 修改3.6. 查询3.7. 清空 四、示例代码 前言 之前介绍了C语言实现AVL树&#xff0c; 本文是对AVL树的一个简单应用&#xff0c;在资源偏紧张的硬件设备中可以使用…

记录一下ComboBox在listview中的问题,后面再解决。

在listview的ComboBox&#xff0c;ViewModel类得不到ComboBox的 SelectedModeIndex 和 SelectionChanged事件。 问题描述&#xff1a; 1. 在listview中有ComboBox 2. 数据源类 InspectionInfo &#xff0c;其中有ComboBox的绑定数据源 ModelList&#xff0c;代码如下&#…

BAT030:按列表名单将路径a下的文件夹批量复制到路径b

引言&#xff1a;编写批处理程序&#xff0c;实现按列表名单将路径a下的文件夹批量复制到路径b。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击…

Minio 文件上传(后端处理同文件判断,同一文件秒传)

记录minio 文件上传 MinIO提供多个语言版本SDK的支持&#xff0c;下边找到java版本的文档&#xff1a; 地址&#xff1a;https://docs.min.io/docs/java-client-quickstart-guide.html maven依赖如下&#xff1a; XML <dependency><groupId>io.minio</groupId…

Flask Web 安装bootstrap失败pip install bootstrap

失败原因&#xff1a;网速太慢了 把公共wifi换成手机热点&#xff0c;成功&#xff1a;&#xff09; &#x1f603; 更新&#xff1a;开了手机热点还是报下面的错&#xff0c;但是把科学上网关了&#xff0c;就成功了&#xff0c;反正就是网络问题

基于nodejs+vue 衣服穿搭推荐系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

【Linux常用命令14】Linux系统监控常用命令

proc文件系统 /proc/cmdline 加载kernel时的相关指令与参数 /proc/cpuinfo CPU相关信息&#xff0c;包含频率、类型与运算功能 /proc/devices 记录了系统各个主要设备的主设备号码 /proc/filesystems 记录系统加载的文件系统 /proc/loadavg 平均负载值 top看到就是这个 /proc/…

分布式链路追踪系统Skywalking的部署和应用

一&#xff0c;背景 随着业务的扩张, 系统变得越来越复杂, 由前端、app、api,微服务,数据库,缓存,消息队列,关系数据库, 列式数据库等构成了繁杂的分布式网络. 当出现一个调用失败的问题时,要定位异常在哪个服务,需要进入每一个服务里看日志, 这个过程的复杂度和工作量是不可想…

【XSS_MSN】基于GCN的web攻击Payload识别与可解释性分析

原文标题&#xff1a;Web Attack Payload Identification and Interpretability Analysis Based on Graph Convolutional Network 原文链接&#xff1a;https://ieeexplore.ieee.org/document/10076547/ 作者单位&#xff1a;四川大学网络安全学院 相似原理论文&#xff1…

研发日常踩坑-Mysql分页数据重复 | 京东云技术团队

踩坑描述: 写分页查询接口&#xff0c;order by和limit混用的时候&#xff0c;出现了排序的混乱情况 在进行第N页查询时&#xff0c;出现与第一前面页码的数据一样的记录。 问题 在MySQL中分页查询&#xff0c;我们经常会用limit&#xff0c;如:limit(0,20)表示查询第一页的…