易语言 用精易的网页_访问 请求https的时候返回不了数据

如题,起初不知道什么原因,

改用了 网页_访问s 或者 网页_访问_对象 ,结果都是一样没有数据。

今天用wireshark抓包看了一下,提示Alert Level: Fatal, Description: HandShake Failur

度知:https://blog.csdn.net/u011068702/article/details/84899685

https://www.pianshen.com/article/65571359528/

原来是软件的ssl协议版本和链接地址环境ssl协议版本不匹配,

https://blog.csdn.net/enweitech/article/details/81781405
TLS(传输层安全)是更为安全的升级版 SSL。
由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。

SSL由从前的网景公司开发
有1,2,3三个版本,但现在只使用版本3

TLS是SSL的标准化后的产物
有1.0 1.1 1.2三个版本
默认使用1.0

TLS1.0和SSL3.0几乎没有区别

事实上我们现在用的都是TLS,但因为历史上习惯了SSL这个称呼
平常还是以SSL为多。
网页_访问 使用WinInet的API方式访问网页,
网页_访问_对象, 字节集, , 使用WinHttp的对象方式访问网页
网页_访问S, 文本型, , 源码由[洫蜘蛛]提供,使用WinHttp的 API方式访问网页,如果返回是“?”请查询返回协议头是否有“Content-Encoding: gzip“表示gzip压缩过网页,可用 网页_GZIP解压()命令解压,如果返回是乱码,则返回原始文本,请自行转换编码,失败返回空文本,请取出状态文本。

软件的WinHttp是TLS1.0,请求的网址是TLS1.2,造成通讯不了。

解决办法也有人给出了:

https://bbs.125.la/thread-14086625-1-1.html

本人系统刚好也是win7x64旗舰版,安装了补丁和导入注册表,

重启后,软件请求https网址终于返回了数据。

 

 
调用的DLL命令: .DLL命令 InternetOpenA, 整数型, "WinINet.dll" .参数 lpszAgent, 文本型 .参数 dwAccessType, 整数型 .参数 lpszProxyName, 文本型 .参数 lpszProxyBypass, 文本型 .参数 dwFlags, 整数型 .DLL命令 InternetCloseHandle, 逻辑型, "WinINet.dll" .参数 hInternet, 整数型 .DLL命令 InternetConnectA, 整数型, "WinINet.dll" .参数 hInternet, 整数型 .参数 lpszServerName, 文本型 .参数 nServerPort, 整数型 .参数 lpszUserName, 文本型 .参数 lpszPassword, 文本型 .参数 dwService, 整数型 .参数 dwFlags, 整数型 .参数 dwContext, 整数型 .DLL命令 HttpOpenRequestA, 整数型, "WinINet.dll" .参数 hConnect, 整数型 .参数 lpszVerb, 文本型 .参数 lpszObjectName, 文本型 .参数 lpszVersion, 文本型 .参数 lpszReferer, 文本型 .参数 lplpszAcceptTypes, 文本型 .参数 dwFlags, 整数型 .参数 dwContext, 整数型 .DLL命令 HttpSendRequestA, 逻辑型, "WinINet.dll" .参数 hRequest, 整数型 .参数 lpszHeaders, 文本型 .参数 dwHeadersLength, 整数型 .参数 lpOptional, 文本型 .参数 dwOptionalLength, 整数型 .DLL命令 InternetReadFile, 逻辑型, "WinINet.dll" .参数 hFile, 整数型 .参数 lpBuffer, 字节集, 传址 .参数 dwNumberOfBytesToRead, 整数型 .参数 lpdwNumberOfBytesRead, 整数型, 传址 .DLL命令 HttpQueryInfoA, 逻辑型, "WinINet.dll" .参数 hRequest, 整数型 .参数 dwInfoLevel, 整数型 .参数 lpvBuffer, 文本型, 传址 .参数 lpdwBufferLength, 整数型, 传址 .参数 lpdwIndex, 整数型 .DLL命令 InternetSetCookieA, 逻辑型, "WinINet.dll" .参数 lpszUrl, 文本型 .参数 lpszCookieName, 文本型 .参数 lpszCookieData, 文本型 .DLL命令 CreateThread, 整数型 .参数 lpThreadAttributes, 整数型 .参数 dwStackSize, 整数型 .参数 lpStartAddress, 子程序指针 .参数 lpParameter, 整数型 .参数 dwCreationFlags, 整数型 .参数 lpThreadId, 整数型, 传址 .DLL命令 CloseHandle, 逻辑型 .参数 hObject, 整数型 .DLL命令 TerminateThread, 逻辑型 .参数 hThread, 整数型 .参数 dwExitCode, 整数型 .DLL命令 MsgWaitForMultipleObjects, 整数型 .参数 nCount, 整数型 .参数 pHandles, 整数型, 传址 .参数 bWaitAll, 逻辑型 .参数 dwMilliseconds, 整数型 .参数 dwWakeMask, 整数型 .DLL命令 HttpAddRequestHeaders, , "wininet.dll", "HttpAddRequestHeadersA" .参数 hRequest, 整数型 .参数 lpszHeaders, 文本型, 传址 .参数 dwHeadersLength, 整数型 .参数 dwModifiers, 整数型
易语言网页_访问_对象翻译成C++,可以使用C++的网络库来实现。以下是一个简单的示例: ```c++ #include <iostream> #include <string> #include <curl/curl.h> // 回调函数,用于获取HTTP请求的响应数据 size_t write_callback(char *ptr, size_t size, size_t nmemb, std::string *data) { data->append(ptr, size * nmemb); return size * nmemb; } int main() { // 初始化curl库 curl_global_init(CURL_GLOBAL_ALL); // 创建curl句柄 CURL *curl = curl_easy_init(); if (curl) { // 设置要访问的URL curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com"); // 设置回调函数 std::string response; curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); // 执行HTTP请求 CURLcode res = curl_easy_perform(curl); if (res == CURLE_OK) { // 打印响应数据 std::cout << response << std::endl; } else { // 打印错误信息 std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; } // 清理curl句柄 curl_easy_cleanup(curl); } // 清理curl库 curl_global_cleanup(); return 0; } ``` 这个示例使用libcurl库来实现HTTP访问。其中,write_callback()函数是一个回调函数,用于获取HTTP请求的响应数据。curl_easy_setopt()函数用于设置curl句柄的选项,例如要访问的URL、回调函数等等。curl_easy_perform()函数用于执行HTTP请求。如果执行成功,那么响应数据会被存储在response字符串中。如果执行失败,那么会打印错误信息。最后,通过curl_easy_cleanup()函数和curl_global_cleanup()函数来清理curl句柄和curl库。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值