(转)Delphi编写WebService体会

Delphi调用C#写的webservice Delphi调用C#写的webservice 用delphi的THTTPRIO控件调用了c#写的webservice。 下面是我调试时遇到的一些问题: 1:导入wsdl文件:file--new----other----webservice---WSDLimporter---输入wsdl地址:如下:http://127.0.0.1/ WebService/WebServiceCall.a 阅读详情

Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口

   TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE)

   ISAPI:(DLL) Base64编码: uses EncdDecd; s := EncodeString(s); //加 base64 编码 s := DecodeString( str ); //解码 UTF8: UTF8 是8位的UNICODE字符,而ASCII是7位 ,gb2312和unicode是2字节/字,utf8是3字节/字utf8类似以前的8位转7位的编码,是为 了 在网络间不同系统的通讯方便而作的转换。 几乎所有用.Net写的WebService只支持DOC方式、Delphi写的只支持RPC方式;J2ME目前对Web Service的支持仅限于RFC172,而 RFC172要求必须为DOC方式(sun怎么偏袒MS?)!

   为了在设计中减少障碍,下面还介绍几个概念。

   1) SOAP:SOAP是一种简单有效的数据传输协议,用于分布式网络环境下数据信息交换,它以XML 作为数据传输的格式,搭配Internet上标准的传输协议HTTP、SMTP、TCP等来传送信息。从本质上看,SOAP事实上只是将Request和Response经由XML格式把数据打包,达到双方沟通的目的。

    2) WSDL:WSDL(Web Service Description Language)是一种以XML格式描述的Web Service语言,当Web Service Provider 要对外公布提供的 Web Service,就需要通过WSDL来构建描述语言。 在WSDL中有两个非常重要的要素: :此WSDL文件所要描述的Web Service集合; 每一个Port代表外界Client可以和此Service沟通的一个进入点,一个Port会指定一个Binding方式。

   3):处理中文乱码的问题: 将HttpRio的 Converter 的 Options 的 soUTF8InHeader 设为 True 将生成soap消息的HTTPSoapDispatcher控件,添加encoding为gb2312 HTTPRIO.HTTPWebNode.UseUTF8InHeader := True;

    4)在Delphi中,能够传递的自定义类型的对象要继承TRemotable,

   5:修正一个服务器端的一个Bug:将ISAPIThreadPool和ISAPIApp的次序变一下:ISAPIApp必须在ISAPIThreadPool之前: uses ... ISAPIApp, ISAPIThreadPool 解决如下错误: Received content of invalid Content-Type setting:text/html -SOAP"expects"text/xml" 6:"XML document must have a top level element. Line: 0" 错误,我该如何解决?? 哈纳斯 (2002-08-05 17:26:00) 我也曾碰到同样的问题 解决方法是:别设httprio的wsdllocation,设它的url 如http://localhost/mydir/project1.exe/wsdl/IFIRST mydir是你的可执行的虚拟目录,IFIRST是你定义的接口名 ***********************************************************************************************

Delphi中WebService包含的组件解释(有7个)
   (1) THTTPRIO-------:使用Http消息来调用远程使用SOAP的接口对象

   (2) THTTPReqResp---:给服务器发送一个SOAP消息, THTTPReqResp在可调用接口上执行一个方法请求.  

   (3) TOPToSoapDomConvert ----:TOPToSoapDomConvert处理Soap方法请求的组合与分发

   (4) TSoapConnection:TSoapConnection在客户端的多层数据库应用中创建并维护客户端和作为WebService 的远程应用服务器间的连接

   (5) THTTPSoapDispatcher -----:通过将Soap消息转发给调用者,THTTPSoapDispatcher对Soap消息做出响应.

   (6) TWSDLHTMLPublish -----:TWSDLHTMLPublish发布描叙webService应用的Wsdl文档

   (7) THTTPSoapPascalInvoker -----:THTTPSoapPascalInvoker解释Soap的请求信息,并执行相应的可调用接口. ***********************************************************************************************

WSDL 说明:

   (Web Services Description Language) 规范是一个描述接口,语义以及Web服务为了响应请求需要经常处理的工作的XML文档。这将使 简单地服务方便,快速地被描述和记录。以下是一个WSDL的样例: My first service

它包含了以下的关键信息: 消息的描述和格式定义可以通过XML文档中的和 标记来传送。 标记中表示了消息传送机制。 (e.g. request-only, request-response, response-only) 。 标记指定了编码的规范 。 标记中表示服务所处的位置 (URL)。 WSDL在UDDI中总是作为一个接口描述文档。因为UDDI是一个通用的用来注册WSDL规范的地方,UDDI的规范并不限制任何类型或者格式描述文档 。这些文档可能是一个WSDL文档,或者是一个正规的包含导向文档的Web页面,也可能只是一个包含联系信息的电子邮件地址。现在Java提供了一个 Java API for WSDL (JWSDL)规范。它提供了一套能快速处理WSDL文档的方法,并且不用直接对XML文档进行操作,它会比 JAXP更方便,更快速。 ***********************************************************************************************

SOAP说明

   (Simple Object Access Protocal)。 我们先简单了解WebServices运作模式。服务端生成服务描述文件WSDL(Web Services Description Language,类似COM的Interface Description Language),如果接收客户端的SOAP请求消息(XML格式数据),解析其调用和参数,根据WSDL和WSML(Web Services Meta Language,Microsoft为描述WSDL里提供的方法与实现该方法的COM对象之间的映射关系而特地设立),调用相应COM对象完成指定功能,并返回到SOAP消息遣至用户;客户端取得并解析服务端的服务描述文件从而得知服务端的服务内容及调用方式,生成SOAP请求消息(指定调用的方法 名称和参数)送往服务端。 ***********************************************************************************************

TReomtable说明

   : WebService中自定义类都是继承自该类 //自己定义一个继承自TRemotable的类 (注意只有属性定义,没有方法) TSpeciesInfo = class(TRemotable) private FLength: Integer; FSpeciesName: string; FCategory: string; FCommonName: string; FmoreInfo: string; published property Category: string read FCategory write FCategory; property CommonName: string read FCommonName write FCommonName; property SpeciesName: string read FSpeciesName write FSpeciesName; property Length: Integer read FLength write FLength; property MoreInfo: string read FmoreInfo write FMoreInfo; end;

TSOAPAttachment说明

   :一种Soap的流类型数据.跟平时的integer等等一个意思 //比如

   (1):服务器端建立一个流输出(result:) GrapStream:=TMemoryStream.create; try SoapAttachment:=TSoapAttachment.create; TBolbField(frmdm.adoqury.fields[0]).SaveToStream(GrapStream); SoapAttachment.SetSourceStream(GraphStream,soReference); result:=SoapAttachment; except if assigned(GrapStream) then GrapStream.free; if assigned(SoapAttchament) then SoapAttchment.free; end

   (2):客户端接受一个流输入 var src:string; begin if not Assigned(SoapAttachment) then exit; Src:=SoapAttachment.CacheFile; ....

例子,基于Soap和webService的分布式网络程序实例

//编写服务器端 --ok

   1:File --->New---->Other----->WebService--->Soap WebService Application 后生成3个组件 一个是调用者组件:THTTPSoapPascalInvoker:完成Soap消息和.... 一个是调度者组件:THTTPSoapDispatcher:自动响应送入的soap消息,并且把他们传递给调用者,可以使用他的 WebDispatch属性来识别应用程序响应的http请求.包括设置PathInfo属性来指明指向应用 程序的任何URL的路径部分,设置MethodType属性来指明请求消息的方法头. 一个是WSDL发布者:TWSDLHTMLPublisher:WSDL发布者发布描叙接口以及如何调用他们的wsdl文档,使用非delphi 编写的客户端程序也可以调用WebService应用程序.

   2:在接口中添加方法和在实现该接口的类中实现该方法. (1):接口中自定义的类都是继承自TRemotable类,该类只能有属性,没有方法 (2):

3:将生成的Dll文件拷贝到 C:\InetPub\Scripts目录下面.

//编写客户端 --ok

   (1):File--->New--->other---->WebSerice--->Wsdl Importer: 对话框1:WsDl Source:输入==>http://服务器名/scripts/应用程序名/wsdl/相应接口 ,然后Next下步.然后点finish

   (2):添加一个普通的窗体,上面放WebService中的控件:HTTPRIO,编写它的OnAfterExecute ,OnBeforeExecute事件 连接服务:http://server/script/MyWebService.dll/Soap/ImyWeb ***请注意是Soap/接口 FAttachService为WebService的接口 if FAttachService = nil then begin FAttachService := GetiMyWeb(False, EditUrl.Text); (FAttachService as IRIOAccess).RIO.OnBeforeExecute := HTTPRIO1BeforeExecute; (FAttachService as IRIOAccess).RIO.OnAfterExecute := HTTPRIO1AfterExecute; end; Result := FAttachService; ******************************************************************************* (HTTPRIO1 as ITest).TestFunction(aParam, bParam);

   (3):注意在IIS中设置Script的是否有执行权限.

编写一个基于Soap DataModule的三层数据库应用

   服务器端:

   建立一个Web App Debugger executable类型,不需要接口,添加一个Soap Data Module,放上AdoCon,AdoDataSet,DataSetProvider1 设置数据好连接,利用AdoDataSet打开一个数据集,然后编译运行,打开Web App Debugger查看是否正确.

客户端:

(1)建立一个普通的应用程序,添加SoapConnection1组件,设置他的url:格式为:http://localhost:1024/Demo3.wadSoapDemo3/soap

   (2)添加一个ClientDataSet 设置它的RemoteServer=SoapConnection1,provideName=DataSetProvider1 (注意将Web App Debugger打开) (3)Active就可以看到数据了.

WebService的服务器端的调试

   (1):编写服务器时选择:Web App Debugger executable类型

   (2):编写完成后运行一次服务器,则系统将把该webservice的类注册  

   (3):启动Tool--->Web App Debugger,设置servers的options port============1024 default url=====http://localhost:1024/Demo3.wadSoapDemo3/wsdl 其中demo3为exe程序的名字, wadSoapDemo3为建立服务器的时 候填写的类名称,可在主Form的initialization中找到:TWebAppSockObjectFactory.Create('wadSoapDemo3')

   (4)打开ie,在地址输入:http://localhost:1024/Demo3.wadSoapDemo3/wsdl就可以查看接口了


Delphi 编写调用WebService接口的小程序(天气预报) Delphi 编写调用WebService接口的小程序 最近由于项目需要在编写一个webservice的客户端,网上找来了不少资料,都说可以通过delphi自带的向导来生成调用接口的文件。 如对天气预报的webservice调用http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl ,查看各地的天气预报 1、打开del 阅读详情

相关推荐

Delphi 调用C# webservice

转自:http://www.cnblogs.com/jdmei520/archive/2009/06/17/1505053.html Webservice技术的出现将各种开发技术和语言完全的融合了,下面就这种融合在C#和delphi之间的交互做一次全面的体现 1.使用C#创建

beyondqd的专栏 2523

delphi D10.X 生成WebService接口介绍

概述 WebService是一种跨编程语言和跨操作系统平台的远程调用技术。他是基于http的soap协议传输数据 webservice=soap=http+xml,webservice协议就是有http+xml组成的,其中xml中会用到wsdl,而wsdl是描述语言xml中的一种格式。 WebService交互的过程就是,WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。 这是一种很早就出现的数据交互技术,现在的系统中很少再使用到,在用的多数是原有系统沿用下来的。 当年使

tanqth的专栏 1万+

Delphi实现WebService带身份认证的数据传输

在WebService中,用户身份认证信息可以在客户端通过soap头(soapheader)进行传送。在WebService服务端的编写中,需要对soap头进行处理,这个处理过程就是提取SoapHeader中的用户认证信息进行验证。下面就来看看在Delphi中这个身份认证是如何实

beyondqd的专栏 5810

DELPHI通过WebService进行数据交互

WebService是一种可以跨语言和平台的数据交互模式,使用非常广泛,与JSon数据格式结合,更是当前非常流行的一种模式,本章针对DELPHI通过WebService进行数据的交互做一个相对简单例子应用。到当前为止,我们的服务端就创建好了,不过是个空的服务端,什么接口都没有,但我们可以运行一下看看。好了,到当前为止,我们服务端正式完成,F9运行并Star服务,不要关闭,我们开始设计客户端。好了,我们第一个函数创建完成,为了避免麻烦,我们把第二个函数也一起完成后,再来建立客户端。

2803

Delphi调用WebService

Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。在Delphi中调用Webservice服务比较简单,具体过程如下.1.利用Delphi提供的WebServices Importer功能来引入服务器端的WSDL。打开Delphi7,选择file-new-other,点击WebService选项卡。选中WSDL Importer点击OK,出现WSDL Importer向导。输入WSDL地址,测试地址为http://ww

fly的专栏 9102

Delphi实现的独立WebService服务设计

Delphi是一种强类型、编译式的编程语言,具有高效的开发效率和跨平台的特性,一直以来都是IT行业在开发桌面和服务器应用的首选语言。其核心优势之一是提供了丰富的组件库,极大地简化了开发过程。在WebService开发中,Delphi语言能够快速搭建服务端应用,实现复杂的网络通信。WebService是一种基于Web的分布式计算技术,它允许应用程序通过网络使用标准化的XML消息传递机制进行交互。在Delphi中,开发者可以利用WebService简化应用程序之间的数据交换,构建松耦合的服务体系结构。

weixin_34456923的博客 1387

Delphi 编写调用WebService接口的小程序

Delphi 编写调用WebService接口的小程序 最近由于项目需要在编写一个webservice的客户端,网上找来了不少资料,都说可以通过delphi自带的向导来生成调用接口的文件。 如对天气预报的webservice调用http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl ,查看各地的天气预报 1、打开delphi开发软件到 File--> New--> Application 新建一个工程,在窗体上放置两个

全欣 的专栏 2317

用Delphi-实现WebService

用Delphi-实现WebService 用Delphi-实现WebService 用Delphi-实现WebService

一步一步用Delphi6实现Web Service

      本文介绍的是如何用Delphi6开发Web Service程序,并把服务程序放在IIS Web服务器上提供给各种客户程序调用。一编写服务程序第一步:File----->New----->Other------>WebServices----->Soap Server Application选择ISAPI/NSAPI Dynamic Link Library然后确定。生成一个

coala的专栏 1526

Delphi Service Application

利用Service Application创以服务形式运行服务器程序,该Demo提供与用户交互界面,托盘图标显示,适应刚接触Service开发初学者

半桥LLC谐振变换器及同步整流MATLAB仿真(二)

接上文,半桥LLC谐振变换器及同步整流MATLAB仿真

qq_55203246的博客 4329

用Delphi编写WebService的心得体会.

相关名词:    Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口    TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE)    ISAPI:(DLL) Base64编码: uses EncdDecd; s := EncodeStr

9017

PostgreSQL 在 Windows操作系统 无管理员权限情况下的部署详解

但是因为使用默认5432端口,我们修改了端口,所以连接报错,需要修改local连接信息,右键-属性修改相应信息即可,方式同上。(也别太任意吧,个人习惯工具放在不包含中文及特殊字符的目录,另外目录名尽量简短,避免不必要的麻烦)图中我解压到了自己的tools\postgresql18。1)如果想修改默认的5432端口,找到初始化目录中的(上面的tools\postgresql18\。此处替换成你的实际目录\tools\postgresql18\pgsql\pgAdmin 4\runtime。

dong_zhi2328的博客 1117

用Delphi编写WebService的心得体会

相关名词:     Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口     TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE)     ISAPI:(DLL) Base64编码: uses EncdDecd; s :=

lxllovely的专栏 989

基于STM32-XPC仿真平台的构架

基于STM32-XPC仿真平台的构架 xPC Target是MathWorks公司的MATLAB提供的一个基于RTW(Real-Time Workshop)体系框架的附加产品,是一种用于产品原型开发、测试和配置实时系统的PC机解决途径。xPC目标实时仿真系统能够使开发者在产品开发前进行产品原型的快速实现、测试和评估,是 Simulink 工具集下用于产品原型开发设计测试集于一体的工具箱。

sujianbonwpu的博客 4487

GBase8a-GDCA认证考试-复习参考题

为提升产品服务水平定期举办GBase产品认证培训,培训更多GBase数据库专业人员,满足用户快速成长的业务需求,建设GBase产品生态。请注意甄别,根据所学知识综合判断,正确率97%(97分)。

weixin_41826637的博客 2373

Delphi编写WebService

Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口   TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE)   ISAPI:(DLL) Base64编码: uses EncdDecd; s := EncodeString(s);

lxllovely的专栏 1348

保姆级教程:在PyCharm里用Continue插件一键接入DeepSeek API(含乱码修复)

本文详细介绍了如何在PyCharm中通过Continue插件无缝集成DeepSeek API,提供从环境准备到高级配置的全流程指南,包括解决常见的乱码问题。通过本教程,开发者可以轻松实现AI编程助手的高效调用,提升代码编写和调试效率。

weixin_30275415的博客 850

Delphi中WebService服务

Delphi开发和调用的webservice 在用delphi编写webservice时遇到的第一问题就是如何编写,怎么写?上网查了一下,内容还是听不少的,当然通过多方资料的比较,了解到通过file--new----other----webservice可以建立并测试webservice,但是我的delphi中却没有这个选择,于是很迷茫,问了一下“大牛”程序员才知道,是因为我的vcl自带的包被卸

3224

AI智能体协作:构建更精准的公司破产预测模型

公司破产预测对于金融机构、投资者和监管部门等具有至关重要的意义。准确的破产预测可以帮助金融机构提前做好风险防范,避免贷款损失;投资者可以根据预测结果调整投资组合,降低投资风险;监管部门可以及时发现潜在的金融风险,采取相应的监管措施。然而,传统的公司破产预测模型往往存在精度不高的问题,无法满足实际需求。本研究的目的是利用AI智能体协作的方式,构建一个更精准的公司破产预测模型。通过将多个AI智能体的优势进行整合,充分挖掘公司财务数据、市场数据等多源数据中的信息,提高预测的准确性和可靠性。

2501_92132293的博客 1081

QT触摸屏开发:如何通过重写事件处理实现精准按键长按检测

本文针对QT触摸屏开发中按键长按检测不精准的常见问题,深入剖析了传统信号机制失效的原因,并提供了通过重写事件处理函数(event)的解决方案。文章详细介绍了创建自定义TouchButton类、直接处理QTouchEvent以实现可靠长按检测的完整步骤与代码示例,并分享了进阶优化与避坑指南,帮助开发者实现跨平台一致的精准交互。

weixin_29207149的博客 95

Delphi 10 创建Webservice和部署webservice(一)

之前写过,后来忘记了。今天对照别的地方的,写了一个。 Delphi7编写的Webservice生成的DLL部署到IIS上,步骤如下: 1.打开DELPHI 7,选择File-New-Other,选择WebServices,选中SOAP Server Application,如图所示: 2.默认第一个选项: 3.填写名称: 4.生成两个文件WebserviceDemoIntf接口定义与WebserviceDemoImpl接口实现。 在WebserviceDemoIntf中编写自定...

qq_15267865的博客 2449

MFC Tab Control控件完全指南:从基础使用到高级定制

本文详细介绍了MFC中TabControl控件的使用方法和高级技巧。主要内容包括:1) TabControl基础属性设置与绑定;2) 样式定制和外观自定义;3) 创建派生类实现扩展功能;4) 动态页面管理和子对话框控制;5) 高级功能如标签拖拽排序和右键菜单。通过完整代码示例,展示了从基本应用到复杂场景的实现方案,包括多标签页管理、自定义绘制、动态添加/删除标签等核心功能,为MFC开发者提供了全面的TabControl开发指南。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 257

Delphi WebService 的编写、调试、发布(IIS)、调用

下面说明如何编写用于IIS发布的ISAPI类型的WebService。 1、 New|Other|WebServices|SOAP Server Application|这里先选择建立Web App Debugger     类型的WebService,因为这种类型的WebS

beyondqd的专栏 1570

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Delphi编写WebService体会

源:Delphi编写WebService体会 Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口 TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE) ISAPI:(DLL)Base64编码: us...

weixin_30316097的博客 131

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Delphi与WebService

大家都知道C# Webservice技术的出现将各种开发技术和语言完全的融合了,下面就这种融合在C#和delphi之间的交互做一次全面的体现,前者是目前最好的开发平台,后者依然是小型c/s系统的最佳选择. 1.使用C#创建一个Webservice服务。 使用vs2005的模板创建C# Webservice非常容易。原文件如下: [WebService(Namespace = \"ht

panda158的专栏 3017

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: C#基础概念二十五问
下一篇: Delphi实例分析:远程传输数据和文件
百炼成钢百忍成佛
博客等级 码龄24年 144粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值