Win32 中本机 C/C++ 的高级 HTTP 客户端库

2023-11-23

Win32 中是否没有用于本机 C/C++ 的“高级”HTTP 库,或者我只是找错了地方?

我所说的“高级”是指一个 API,它允许我使用与 .NET 框架“大致相同”的抽象级别在 C++ 中执行 HTTP Web 请求/响应(但请注意,使用 C++/CLI 不是我的选择)。

如何在 Win32 中的 C/C++ 中执行类似的操作(使用大约相同数量的代码)而不使用 .NET?作为参考,我提供了一个代码示例来展示如何在 C# 中执行此操作。

byte[] fileBytes = null;
bool successfulDownload = false;
using (WebClient client = new WebClient())
{
    WebProxy proxy = WebProxy.GetDefaultProxy();
    client.Proxy = proxy;
tryAgain:
    try
    {
        fileBytes = client.DownloadData(fileUrl);
        successfulDownload = true;
    }
    catch (WebException wEx)
    {
        if (wEx.Response != null && wEx.Response is HttpWebResponse)
        {
            string username = null, password = null;
            bool userCanceled = false;
            HttpStatusCode statusCode = ((HttpWebResponse)wEx.Response).StatusCode;
            switch (statusCode)
            {
                case HttpStatusCode.ProxyAuthenticationRequired:
                    // This is just a convenience function defined elsewhere
                    GetAuthenticationCredentials(fileUrl, true,
                        out username, out password, out userCanceled);
                    if (!userCanceled)
                    {
                        client.Proxy.Credentials = new NetworkCredential(username, password);
                        goto tryAgain;
                    }
                    break;
                case HttpStatusCode.Unauthorized:
                    // This is just a convenience function defined elsewhere
                    GetAuthenticationCredentials(fileUrl, false,
                        out username, out password, out userCanceled);
                    if (!userCanceled)
                    {
                        client.Credentials = new NetworkCredential(username, password);
                        goto tryAgain;
                    }
                    break;
            }
        }
    }
}

Win32 提供了Internet*功能。

http://msdn.microsoft.com/en-us/library/aa385473(VS.85).aspx

你需要做一个(IIRC,我已经 10 多年没有接触过这些 API)InternetOpenURL and InternetReadFile.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win32 中本机 C/C++ 的高级 HTTP 客户端库 的相关文章

随机推荐

  • 错误 TS2339:类型“Observable”上不存在属性“catchError”

    这是我在 book service ts 中的代码 import Injectable from angular core import Http Response from angular http import Observable f
  • 在asp.net MVC中不使用@HTML.Beginform并使用Jquery(ajax)发布表单

    如何在不使用 HTML Beginform 并使用 JQuery Ajax 的情况下填写表单 现在我尝试过 var postData form1 username form2 password ajax type POST url Cont
  • IEnumerable.Last() 是否针对 List 进行了优化?

    我有一个List
  • 查找图中的最小割边

    给定一个随机无向图 我必须找到 瓶颈边 编辑 最小切割边 才能从一个顶点到达另一个顶点 我所说的 瓶颈边缘 编辑 最小切割边缘 假设我有以下无向图 A B C D E F G H 为了从 A 到 H 独立于所选路径边 必须始终遍历 BE 和
  • python 中的会话身份验证

    使用来自的会话requestspython 中的模块 似乎会话仅在第一个请求时发送授权 我不明白为什么会发生这种情况 import requests session requests Session session auth u user
  • 为什么点符号只能引用表格?

    这似乎是一个简单的初学者问题 但我无法在任何地方找到答案 假设我有这样的 HTML
  • Swift 中的字符串插值

    swift 中的函数采用 Swift 中的任何数字类型 Int Double Float UInt 等 该函数将数字转换为字符串 函数签名如下 func swiftNumbers
  • 如何在 JQuery 中将 json 响应读取为名称值对

    我想在 JQuery 代码中将 json 响应读取为名称和值对 以下是我从 java 代码返回的示例 JSON 响应 String jsonResponse name1 value1 name2 value2 在我的 JQuery 中 如果
  • Python,numpy 排序数组

    我正在使用 numpy 并有一个包含一些值的数组 ndarray 类型 该数组的形状为 1000x1500 我重新塑造了它 brr np reshape arr arr shape 0 arr shape 1 当我尝试时 brr rever
  • 使用 tSQLt 测试时如何回滚事务

    我最近正在调用一个代码中包含 rasierror 的过程 raiserror 位于 try catch 块中 BEGIN TRAN 也位于 raiserror 之后的同一个 try catch 块中 Catch 块旨在在事务中发生错误时回滚
  • 扩展范围的继续和中断

    是否有可能continue or break拥有比当前运行的循环更大的范围 在下面的示例中 我希望在以下情况下继续执行外部 for 循环 expr是 true 尽管它是在内部 for 循环中调用的 因此两者都不是 some inner co
  • 验证失败时防止焦点集中在字段上

    我经常使用这个 jQuery 验证插件验证表单 效果很好 真的很满意 但是当您在表单上按 提交 时 它会自动将焦点放在无效的字段上 在我当前的项目中 我有一个非常长的表单 当您按下提交按钮时 您的滚动条会跳到该字段 可能是因为它获得焦点 但
  • 在 C# 中,如何在运行时检查对象是否属于某种类型?

    在 C 中 如何在运行时检查对象是否属于某种类型 您可以使用is关键词 例如 using System class CApp public static void Main string s fred long i 10 Console W
  • 如何在Excel中过滤多个条件?

    我正在尝试过滤多个条件 但我看到 过滤器 选项只有 2 个 AND OR 选项字段 我有一个充满链接的专栏 我想提取其中包含这些的所有行 pdf doc docx xls xlsx rtf TXT csv pps 有没有好的方法可以做到这一
  • Java读取wav文件

    我想用 Java 读取 wav 文件 并且将使用 K means 对它们进行分类 我怎样才能读取Java中的wav文件并将它们分配到一个数组或类似的东西 你可以建议它的想法 来对它们进行分类 EDIT 我想使用 API 来读取 wav 文件
  • 如何像 UNIX 中的 tar 一样在 Perl 中归档目录?

    我想归档一个目录 我不知道是否可以调用 我想压缩一个目录 我想在解压时保留另一端的访问权限 我应该用 perl 解决这个问题 感谢您的回复 但我为什么要求使用 Perl 来做到这一点是因为我希望它独立于平台 我想将一个大文件传输到多台机器
  • 如何克隆到非空目录?

    我有目录 A 和与目录 B 匹配的文件 目录 A 可能还有其他需要的文件 目录 B 是一个 git 存储库 我想将目录 B 克隆到目录 A 但 git clone 不允许我这样做 因为该目录非空 我希望它只是克隆 git 并且因为所有文件都
  • 如何使用 python 将 wav 实时转换为 mp3?

    我有如下所示的代码来从麦克风获取音频 import pyaudio p pyaudio PyAudio CHUNK 1024 FORMAT pyaudio paInt16 CHANNELS 2 RATE 1024 10 RECORD SEC
  • 范围最小查询 方法(从树到受限 RMQ)

    所以 我读了thisTopCoder 关于 RMQ 范围最小查询 的教程 我有一个很大的问题 在他介绍的部分方法 到目前为止我能理解的是 整个方法实际上使用了中介绍的方法稀疏表 ST 算法 从 LCA 减少到 RMQ and 从 RMQ 到
  • Win32 中本机 C/C++ 的高级 HTTP 客户端库

    Win32 中是否没有用于本机 C C 的 高级 HTTP 库 或者我只是找错了地方 我所说的 高级 是指一个 API 它允许我使用与 NET 框架 大致相同 的抽象级别在 C 中执行 HTTP Web 请求 响应 但请注意 使用 C CL