VB6.0使用winHttp.dll访问webApi

  问题背景:需要用VB编程访问webApi,web方使用的是https的协议。

   开始我用xmlhttp方式访问,失败。后网上搜索发现xmlhttp不支持https的方式。于是采用winHttp.dll。
   由于我测试时候使用的是win7系统,测试顺利通过。用户环境都是xp环境,结果发现返回值失败。

----------------------------------------------------------------------------------------------------------------------------------------------
后来验证发现:
如果用引用方式,win7+win10+xp系统都能正常访问。
之前win10,win7能正常访问,xp系统访问失败。是因为采用动态创建winhttp对象。




你可以使用 Winhttp.dll 来下载图片。下面是一个使用 Winhttp.dll 下载图片的示例代码: ```cpp #include <Windows.h> #include <Winhttp.h> #include <iostream> #include <fstream> #pragma comment(lib, "Winhttp.lib") int main() { // 创建 WinHTTP 会话 HINTERNET hSession = WinHttpOpen(L"WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); if (hSession) { // 打开连接 HINTERNET hConnect = WinHttpOpenRequest(hSession, L"GET", L"http://example.com/image.jpg", NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0); if (hConnect) { // 发送请求 if (WinHttpSendRequest(hConnect, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0)) { // 接收响应 if (WinHttpReceiveResponse(hConnect, NULL)) { // 创建文件并写入数据 std::ofstream file("image.jpg", std::ofstream::binary); if (file) { BYTE buffer[4096]; DWORD bytesRead; while (WinHttpReadData(hConnect, buffer, sizeof(buffer), &bytesRead) && bytesRead > 0) { file.write(reinterpret_cast<const char*>(buffer), bytesRead); } file.close(); std::cout << "图片下载成功!" << std::endl; } else { std::cerr << "无法创建文件!" << std::endl; } } else { std::cerr << "无法接收响应!" << std::endl; } } else { std::cerr << "无法发送请求!" << std::endl; } // 关闭连接 WinHttpCloseHandle(hConnect); } else { std::cerr << "无法打开连接!" << std::endl; } // 关闭会话 WinHttpCloseHandle(hSession); } else { std::cerr << "无法创建会话!" << std::endl; } return 0; } ``` 在上面的示例代码中,将 `http://example.com/image.jpg` 替换为你想要下载的图片的 URL。此代码将创建一个名为 "image.jpg" 的文件,并将下载的图片数据写入其中。你可以根据需要修改保存文件的路径和文件名。 请注意,此示例仅适用于 Windows 平台,并且需要链接 Winhttp.lib 库。如果你使用的是其他平台或开发环境,请相应地进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值