• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

VC6.0调用ASP.NET WebService示例

VC/MFC/Windows 弦苦 2790次浏览 0个评论

开发平台:

WinXP SP3+IIS5.1+IE7+Visual Studio 2005+Visual Studio 6.0+ MS SOAP Toolkit 3.0

 

一.创建ASP.NET WebService

Visual Studio 2005à文件à新建à网站àASP.NET Web服务项目WebServiceDemo

以下为Service.cs代码清单:

// WebService.cs using System; using System.Web; using System.ComponentModel; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = “http://Fantasy/WebServiceDemo/”)] [System.Web.Services.Protocols.SoapRpcService] public class Service : System.Web.Services.WebService { public Service() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod] public int AddNumbers(int NumberOne,int NumberTwo) { return NumberOne + NumberTwo; } }

生成à生成网站à发布网站。

 

二.为WebServiceDemo创建虚拟目录WebServiceDemo

开始à设置à控制面板à管理工具àInternet信息服务à默认网站à右击新建à虚拟目录WebServiceDemo指向Projects/WebServiceDemo/PrecompiledWeb/WebServiceDemo.

 

三.在Web浏览器中输入http://localhost/WebServiceDemo/Service.asmx

出现以下错误:

无法显示 XML 页。

使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。

名称以无效字符开头。处理资源 ‘http://localhost/WebServiceDemo/Service.asmx’ 时出错。第 1 行,位置: 2

<%@ WebService Class=”Service” %>

-^

解决方案:http://blog.csdn.net/changyuming/archive/2008/09/24/2971400.aspx

运行C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe –i

cmd窗口中将显示:

开始安装ASP.NET <2.0.50727>

…………

 

VC6.0调用ASP.NET WebService示例 

若要使(局域网)外网访问WebServiceDemo/Service.asmx,则需要为Windows防火墙添加80端口的例外TCP80。在局域网内其他机器的Web浏览器中输入:http://192.168.89.125/WebServiceDemo/Service.asmx则可访问本机的Service.asmx

若出现“此 Web 服务不符合 WS-I Basic Profile v1.1。”错误,则在Web.Config文件中<system.web></system.web>之间添加以下代码:

        <!–解决“此Web服务不符合 WS-I Basic Profile v1.1。”错误–>

        <webServices>

            <conformanceWarnings>

                <remove name=BasicProfile1_1/>

            </conformanceWarnings>

        </webServices>

 

四.创建VC6.0客户端SOAP应用程序远程调用AddNumbers函数

参考SOAP Toolkit 3.0 User Guideà Basic Sample Applicationsà Using the Low-Level APIs for SOAP Messages (DocSample2) à Creating a C++ Version of DocSample2à Creating the Client-Side C++ Code

以下为Win32 Console项目SoapDemosoapDemo.cpp代码清单:

// soapDemo.cpp #include <stdio.h> #include <stdlib.h> //先导入msxml4.dll,再导入mssoap30.dll #import “msxml4.dll” using namespace MSXML2; #import “C:/Program Files/Common Files/MSSoap/Binaries/mssoap30.dll”/ exclude(“IStream”, “IErrorInfo”, “ISequentialStream”, /”_LARGE_INTEGER”,”_ULARGE_INTEGER”, “tagSTATSTG”, “_FILETIME”) using namespace MSSOAPLib30; void Add(int No1,int No2) { //char *_itoa( int value, char *string, int radix ); char str1[10],str2[10]; itoa(No1,str1,10); itoa(No2,str2,10); ISoapSerializerPtr Serializer; ISoapReaderPtr Reader; ISoapConnectorPtr Connector; // Connect to the service. Connector.CreateInstance(__uuidof(HttpConnector30)); Connector->Property[“EndPointURL”] = “http://localhost/WebServiceDemo/Service.asmx”; Connector->Connect(); // Begin the message. Connector->Property[“SoapAction”] = “http://Fantasy/WebServiceDemo/AddNumbers”; Connector->BeginMessage(); // Create the SoapSerializer object. Serializer.CreateInstance(__uuidof(SoapSerializer30)); // Connect the serializer object to the input stream of the connector object. Serializer->Init(_variant_t((IUnknown*)Connector->InputStream)); // Build the SOAP Message. Serializer->StartEnvelope(“”,””,””); //这里可以添加SoapHeader验证代码: /* Serializer->StartHeader(“”); Serializer->StartHeaderElement(“MyHeader”,”http://Fantasy/WebServiceDemo/”,0,””,”NONE”,””); Serializer->StartElement(“UserName”,””,””,””);//填充参数2则出错。 Serializer->WriteString(_bstr_t(userName)); */ Serializer->StartBody(“”); Serializer->StartElement(“AddNumbers”,”http://Fantasy/WebServiceDemo/”,””,””); // (第三个参数可有可无,若加上第二个参数出错!?) Serializer->StartElement(“NumberOne”,””,””,””);// NumberOne= Serializer->WriteString((_bstr_t)str1); Serializer->EndElement(); Serializer->StartElement(“NumberTwo”,””,””,””);// NumberOne= Serializer->WriteString((_bstr_t)str2); Serializer->EndElement(); Serializer->EndElement(); // Serializer->EndBody(); Serializer->EndEnvelope(); // Send the message to the XML Web service. Connector->EndMessage(); // Read the response. Reader.CreateInstance(__uuidof(SoapReader30)); // Connect the reader to the output stream of the connector object. Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), “”); // Display the result. printf(“Answer = %s/n”, (const char*)Reader->RpcResult->text); } int main() { CoInitialize(NULL); Add(12,24); CoUninitialize(); return 0; }

 

五.SoapDemo客户端调用AddNumbers执行结果:Answer=36

 

 

参考:

SOA的发展历史与准规范

WebService 简介

ASP.NET WebService 如何工作

使用WebService解决多统登录问题

在vc6里soap调用WebService

 

在线WebService

What isW3CW3SchoolsSoap UserOreilly


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明VC6.0调用ASP.NET WebService示例
喜欢 (0)

您必须 登录 才能发表评论!

加载中……