【问题标题】:What API to use for adding HTTP client support in an existing MFC app?使用什么 API 在现有 MFC 应用程序中添加 HTTP 客户端支持?
【发布时间】:2010-10-03 05:41:05
【问题描述】:

我最近接到了一项任务,将与Web Map Services 交互的功能添加到现有的 MFC 应用程序中,我需要一个客户端 HTTP API。

根据我的研究,领先的候选人似乎是 CAtlHttpClientWinHTTP。我很想知道是否有人有可以分享的经验或关于哪种方法更好的意见(或完全不同的建议)。

乍一看,CAtlHttpClient 似乎级别更高一些,更容易使用。然而,在我的研究中,似乎任何时候人们遇到无法用它做某事的问题时,答案都是“使用 WinHTTP”。

结果

我最终使用了 WinHTTP,因为 WinInet 显示对话框并且我们的应用程序可以通过 COM API 使用。我避免使用 Ultimate TCP/IP,因为我在一家大公司工作,并且获得批准在产品中使用的第三方软件是一场彻头彻尾的噩梦。

【问题讨论】:

  • 对一个合法、详细的问题投反对票是怎么回事?如果你要投反对票,至少要留下一个理由。

标签: c++ http mfc winhttp


【解决方案1】:

最简单的就是WinInetMFC wrappersCInternetSession和朋友们。

WinHTTP 虽然是一个不同的 API,但建立在与 WinInet 相同的模型上,但提供了更好的 HTTP 支持(虽然没有 FTP,但您可能不在乎)。应该检查您是否需要 WinHTTP 提供的额外好处。

WinHTTP 的一个缺点是 ATL/MFC 不为其提供包装器,这与 WinInet 不同。

正如 Rob 所说,UltimateTCP 是一个很好的选择。它的优点之一是它是一个库:您将代码链接到您的应用程序中,从而消除了 DLL 地狱的潜在问题。此外,它还附带完整的源代码,如果您遇到实施限制,可能会很方便。

任君挑选!

【讨论】:

  • +1 那些 WinInet MFC 包装器看起来很有前途,而且比 WinHTTP 的东西更容易使用。现在我只需要弄清楚 WinHTTP 有什么 WinInet 没有,这样我就可以决定了。
  • 啊,WinInet 似乎不适合我了——它会显示一些对话框,并且我们的应用程序可以通过 COM API 在没有 UI 的情况下运行。
【解决方案2】:

从这里免费试用 Ultimate TCP/IP:

http://www.codeproject.com/KB/MFC/UltimateTCPIP.aspx

这是一个非常好的库,并且很容易与您的应用集成。

【讨论】:

  • +1 有用的信息,虽然我不确定我是否会使用它:)
猜你喜欢
  • 2011-12-24
  • 1970-01-01
  • 2016-04-21
  • 2015-04-08
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多