从 MFC 表单应用程序调用 Web 服务器
Posted
技术标签:
【中文标题】从 MFC 表单应用程序调用 Web 服务器【英文标题】:Call web server from MFC form application 【发布时间】:2014-10-16 13:59:59 【问题描述】:我有简单的 Web 服务应用程序,用 C# 创建。我需要从 MFC 表单应用程序中调用 addNumbers 方法。最简单的方法是什么?我想我不能指望像 C# Web 服务客户端应用程序这样的简单方法。
namespace WebApplication
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
[WebMethod]
public string HelloWorld()
return "Hello World";
[WebMethod]
public double addNumbers(double value1, double value2)
return value1 + value2;
namespace WebApplication
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
[WebMethod]
public string HelloWorld()
return "Hello World";
[WebMethod]
public double addNumbers(double value1, double value2)
return value1 + value2;
【问题讨论】:
看看这个答案:***.com/questions/10106816/…,你应该能够根据你的需要采用它 【参考方案1】:Microsoft 的 REST Services for C++ 工具包包含大量本地客户端 Web 调用例程。
Windows Web Services 是 WCF Web 服务的本机等价物,仅用 C/C++ 编写,因此它更多更快更好:)
libCurl 是一个标准的网络调用 C 库,可用于访问任何网络服务器系统
Microsoft's ATL Server 也有 Web 服务客户端例程。将它指向您的 wsdl,它将生成客户端代码。
Microsoft 的 MFC ChtmlView 类允许您导航到 Web URL。技术上设计用于调用 Web 服务器并在 MFC 对话框中显示 HTML 页面,它仍可用于调用您的 Web 服务,但您必须解析结果,这取决于您的编码方式,可能很容易或存在再次,它可能是 SOAP。
还有一个来自 Microsoft 的 COM Web 服务客户端,但 IIRC 在几年前就被弃用了。
所以是的.. 通常它就像 C# Web 服务客户端一样简单。我不知道为什么人们认为它不会!如果您想要推荐,我可能会选择 WWS,因为它的设计与 WCF 的东西相同,所以它会起作用。 WCF 的 SOAP 对互操作性有一个“宽松”的政策。
【讨论】:
【参考方案2】:我一直在使用the C++ REST SDK,效果很好。令人惊讶的易于使用,以及其他几个不错的实用程序(即 json 工具等)。因此,如果您的 C# 服务可以支持 REST,这将是一种连接它们的简单方法。祝你好运。
代码将类似于以下内容:
#include <windows.h>
#include "cpprest\json.h"
#include "cpprest\http_client.h"
pplx::task<void> _CallService()
web::http::client::http_client client U("http://localhost:8080") ;
return client.request(web::http::methods::GET, U("service_name/foo")).then([&](web::http::http_response response)
auto status response.status_code() ;
int bodyLength = response.headers().content_length();
);
int main()
Concurrency::task<void> t = _CallService();
t.wait();
return 0;
【讨论】:
这和 C# 客户端一样简单吗?...不,看起来更简单! @gbjbaanb - :) 感谢您的回答。我花了一些时间在您提供的一些链接上。为此 +1!以上是关于从 MFC 表单应用程序调用 Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章
是否有可能/有必要在单独的线程中调用 OnDraw [MFC]
从 mfc 应用程序中点击 webservice 并希望从 webservice 登录方法读取用户代码返回