VC++MFC下實現SOAP服務端和SOAP客戶端
作者:flyfish 2012-5-14
在《C++ 開發SOAP服務端和SOAP客戶端》已經在win32控制臺實現了,現在在MFC框架下實現SOAP服務端和SOAP客戶端
新建一個基于對話框的工程名字是MFCSOAPClient
新建工程的時候不需要添加socket支持
因為在stdsoap2.文件中已經增加了支持
將利用soapcpp2.exe 生成的
calc.nsmap
soapC.cpp
soapcalcPRoxy.cpp
soapcalcProxy.h
socpClient.cpp
soapH.h
soapStub.h
stdsoap2.h
stdsoap2.cpp
添加到工程中直接編譯
soapc.cpp(2796) : fatal error C1010:unexpected end of file while
多個文件出現這樣的提示
缺少預編譯頭文件解決方法是在出錯的文件的開頭增加 #include “stdafx.h”
再次編譯出現如下錯誤
stdsoap2.obj : error LNK2001: unresolvedexternal symbol _namespaces
Debug/MFCSOAPClient.exe : fatal errorLNK1120: 1 unresolved externals
stdsoap2.cpp 文件中除了添加 #include “stdafx.h”外,還需要增加#include”calc.nsmap”
編譯通過
在文件MFCSOAPClientDlg.cpp中增加
#include “soapcalcProxy.h”
在主窗口界面中增加一個按鈕,該按鈕點擊事件如下
UpdateData(TRUE);
calcProxy calc;
const char server[] =“http://localhost:8080”;
calc.soap_endpoint =server;
calc.add(m_Edit_d1,m_Edit_d2, &m_Edit_dResult);
UpdateData(FALSE);
if (calc.error)
{
AfxMessageBox(_T(”出現錯誤”));
}
這里只做了加法的demo。
在兩個編輯框中輸入兩個數,服務端計算完結果將顯示在另外的編輯框中
服務端部分
新建一個基于對話框的工程,名字是MFCSOAPServer
將利用soapcpp2.exe 生成的
soapC.cpp
soapcalcService.h
soapcalcService.cpp
soapH.h
soapStub.h
calc.nsmap
stdsoap2.h
stdsoap2.cpp
添加到工程
代碼更改除了類似客戶端外,還需要將加減乘除的實現代碼添加到soapcalcService.cpp中,之所以添加到soapcalcService.cpp文件中時因為聲明都在soapcalcServic.h文件中
MFCSOAPServerDlg.cpp文件中增加
#include “soapcalcService.h”
在窗口初始化中增加
calcService calc;
/*run iterative server on port until fatal error */
if(calc.run(8080))
{
calc.soap_stream_fault(std::cerr);
}
源碼下載地址 http://download.csdn.NET/detail/flyfish1986/4300769
以上代碼在winxp+vc6 mfc下編譯通過
新聞熱點
疑難解答
圖片精選