2014-10-16 60 views
2

我使用C#創建簡單的Web服務應用程序。我需要從MFC窗體應用程序中調用addNumbers方法。什麼是最簡單的方法來做到這一點?我想我不能指望像C#Web服務客戶端應用程序這樣的簡單方法。從MFC窗體應用程序調用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; 
      } 
     } 
    } 
+0

看看這個答案:http://stackoverflow.com/questions/10106816/how-to-contruct-httpsendrequest-method-of-wininet/ 10133408#10133408,你應該可以採用它來滿足你的需求 – marcinj 2014-10-16 14:05:10

回答

3

有微軟的REST Services for C++工具包,它有大量的原生客戶端Web調用例程。

Windows Web Services這是WCF Web服務的本地等價,只用C/C++所以其更快更好:)

libCurl這是一個標準的網絡調用C庫,可用於訪問任何Web服務器系統

Microsoft's ATL Server也有Web服務客戶端例程。將它指向您的wsdl,它會生成客戶端代碼。

有微軟的MFC CHtmlView類,允許您導航到一個Web URL。在MFC對話框中調用Web服務器和顯示HTML頁面的技術設計,它仍然可以用來調用你的Web服務,但是你必須解析結果,這取決於你編碼它的方式,可能很容易或者在那裏它又可能是SOAP。

還有一個來自微軟的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; 
} 
+0

就像C#客戶端一樣簡單......不,看起來更簡單! – gbjbaanb 2014-10-16 14:51:30

+0

@gbjbaanb - :)我讚賞你的答案。我花了一些時間在你提供的一些鏈接上。 +1! – Jeff 2014-10-16 14:54:48

相關問題