递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 7691|回复: 8
打印 上一主题 下一主题

[视窗] 【模块】WinHTTP API 网页访问模块

[复制链接]

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
跳转到指定楼层
楼主
发表于 2022-7-5 14:37:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Curl 是火山目前最好的网络访问库,不过稍微有点重,因此封装系统自带的网络库还是非常有必要的。
Windows 提供了两套网络访问接口:WinHTTP 和 WinINet,还有基于这两个接口封装的 COM 对象:WinHTTP.WinHttpRequest、XMLHTTPRequest。
其中 COM 对象会简单易用一些,但相比 API 缺了很多功能。而 WinHTTP API 是最底层的,WinINet API 的封装层次比较高,但不能进行底层控制,但相对也有 WinHTTP 不支持的 FTP 连接。
目前这几个在火山里都有第三方的封装,但都不太完整,所以我选择了 WinHTTP C/C++ API 做了完整封装。

本类库主要有以下几个对象:

一、WinHTTP网络类
本对象完整封装了WinHTTP C/C++ API,而且将 WinHttpSetOption 和 WinHttpQueryOption 里面的绝大部分选项都单独封装成方法,所以总共有 160 多个方法,还有 40 多个配套的常量类和辅Zhu类。
本类的方法、参数和常量都有较为完整的备注,但还是适合精通 HTTP 协议的开发者使用。

需要特别注意,WinHTTP 的很多功能只能在较新版的 Windows 上使用,部分甚至还需要 Windows 11 的 SDK。
这也是 WinHTTP 的最大缺点,很多功能受系统版本限制的,不能想用就用,否则你的软件在老系统中运行会报错或崩溃。
除非你的程序不考虑兼容老系统,一般不建议使用 Windows 8 及更高版本才能使用的 API 和选项。

二、网络同步访问类
为“WinHTTP网络类”的二次封装,提供同步的网页访问支持,对系统版本无特别要求,用法跟 Curl 的网络访问类一样。
你可以通过这个类库学习 WinHTTP 是怎样运作的。

EX版增加了自写的Cookie持久存储管理,需要多依赖一个 JSON 库。

三、网络异步访问类
为“WinHTTP网络类”的二次封装,提供异步的网页访问支持,对系统版本无特别要求。


这个类库集成在我的“PIV模块”里,地址:https://www.lkuaiy.com/rsdetails?id=16538767266683541
想要单独文件的,把里面的 p_WinHTTP.v 和 p_Json.v 复制出来即可,后者的 JSON 库是“Cookie自动管理类”的依赖项,如果把这个类和 EX 后缀的访问类删除了,就不需要带这个 JSON 库。

我还没有做充分的测试,如果有问题欢迎向我反馈,二次封装的类近期会持续更新,有条件的话,会增加下载、上传、邮件等功能。

回复

使用道具 举报

411

主题

2515

帖子

8292

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8292
沙发
发表于 2022-7-5 15:10:20 | 只看该作者
本帖最后由 shuimiao 于 2022-7-5 15:11 编辑

这个可以。不过我用curl很爽。以前易语言的时候用的winhttp不知道遇到多少问题,不知道是winhttp本身的问题还是封装的问题。比如有些网页无法获取缺失某部分代码(不是指浏览器动态加载那种),或者遇到个别https就是访问失败。而curl完全没问题。导致我现在不想用winhttp
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
板凳
 楼主| 发表于 2022-7-5 15:26:06 | 只看该作者
shuimiao 发表于 2022-7-5 15:10
这个可以。不过我用curl很爽。以前易语言的时候用的winhttp不知道遇到多少问题,不知道是winhttp本身的问题 ...

应该是封装的问题,可以把这些网址发出来研究一下。
WinHTTP 最大的问题是在不同系统,功能不统一。
回复

使用道具 举报

43

主题

313

帖子

3600

积分

论坛元老

Rank: 8Rank: 8

积分
3600
地板
发表于 2022-7-5 15:58:46 | 只看该作者
winhttp胜在系统自带,体积小,缺点就是你说的,功能不统一,如果使用不当,很容易导致不同的系统出现BUG,这点最难受,CURL除了体积大一点,其它都没毛病
回复

使用道具 举报

411

主题

2515

帖子

8292

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8292
5#
发表于 2022-7-5 22:48:37 | 只看该作者
Xelloss0618 发表于 2022-7-5 15:26
应该是封装的问题,可以把这些网址发出来研究一下。
WinHTTP 最大的问题是在不同系统,功能不统一。 ...

网址的话现在没有了,就是当时遇到。而且我现在不用易语言了,就用火山的curl。所以没遇到这种网址了
回复

使用道具 举报

87

主题

952

帖子

4897

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4897
6#
发表于 2022-7-6 01:33:17 | 只看该作者
winhttp在部分操作系统...不稳定,容易蹦,比如2003/2008...curl稳如狗..
回复

使用道具 举报

0

主题

19

帖子

217

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
217
7#
发表于 2022-9-19 01:35:24 | 只看该作者
CURL 现在大部分都会被误报!
回复

使用道具 举报

111

主题

613

帖子

2178

积分

金牌会员

Rank: 6Rank: 6

积分
2178
QQ
8#
发表于 2022-9-19 01:56:17 | 只看该作者
学习....            
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

0

主题

28

帖子

256

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
256
9#
发表于 2022-9-30 11:48:15 | 只看该作者
支持一下。系统自带的版本问题,默认开启的选项问题,都将影响最终的使用结果。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 19:34 , Processed in 0.083075 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表