从 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 登录方法读取用户代码返回

VS2015 MFC 修改应用程窗口大小 标题

ASP.NET Web 表单 - 如何异步调用 WCF 异步方法?

来自 MFC 的呼叫访问 2007 报告

一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务