先来看一下用Delphi开发的WebService服务接口CzyLogin方法原型:

//判断操作员是否登录成功,返回值true/false,若登录失败sError参数返回失败原因,其原型为:

function CzyLogin(const Czy_ID,Czy_Pwd:string;const sVersion:string;out sError:string):Boolean;stdcall;
begin//...
end;

webservices.asp文件:

<%
Dim WebSrv,WebSrvUrl,WebNameSpace
WebSrv="localhost:8081"  '提供WebService服务的服务器,形式:IP:Port
WebSrvUrl="http://"&WebSrv&"/NetPayWadSrv.NetPay/soap/IAdmin"
WebNameSpace="urn:uAdminIntf-IAdmin" '接口函数所在的命名空间Function CzyLogin(Czy_ID,Czy_Pwd,sError)'CzyLogin函数判断操作员登录是否成功,其原型为:'function CzyLogin(const Czy_ID,Czy_Pwd:string;const sVersion:string;out sError:string):Boolean;stdcall;'//返回值true/false,若登录失败sError参数返回失败原因。sVersion = "1.1.0.28"SoapRequest="<?xml version='1.0'?>"&_"<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' "&_"xmlns:xsd='http://www.w3.org/2001/XMLSchema' "&_"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "&_"xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'>"&_"<SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>"&_"<NS1:CzyLogin xmlns:NS1='"&WebNameSpace&"'>"&_"<Czy_ID xsi:type='xsd:string'>"&Czy_ID&"</Czy_ID>"&_"<Czy_Pwd xsi:type='xsd:string'>"&Czy_Pwd&"</Czy_Pwd>"&_"<sVersion xsi:type='xsd:string'>"&sVersion&"</sVersion>"&_"</NS1:CzyLogin>"&_"</SOAP-ENV:Body>"&_"</SOAP-ENV:Envelope>"'Response.Write(SoapRequest)'Response.End()Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")xmlhttp.Open "POST",WebSrvUrl,falsexmlhttp.setRequestHeader "Content-Type", "text/xml;charset='utf-8'"xmlhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"xmlhttp.setRequestHeader "User-Agent", "Borland SOAP 1.2"xmlhttp.setRequestHeader "HOST",WebSrvxmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)xmlhttp.setRequestHeader "SOAPAction", WebNameSpace&"#CzyLogin" xmlhttp.setRequestHeader "Cache-Control", "no-cache"xmlhttp.Send(SoapRequest)'Response.Write xmlhttp.Status&"|"&xmlhttp.StatusText'Response.Write xmlhttp.responsetext'Response.End()If xmlhttp.Status = 200 ThenSet xmlDOC = server.CreateObject("MSXML.DOMDocument")xmlDOC.load(xmlhttp.responseXML)'=====================BEGIN 测试代码====================''xmlDOC.Save("e:\\result.xml")'xmlStr = xmlDOC.xml'xmlStr = Replace(xmlStr,"<","<",1,-1,1)'xmlStr = Replace(xmlStr,">",">",1,-1,1)'Response.write xmlStr'Response.write "<hr />"'=====================END   测试代码===================='CzyLogin=xmlDOC.documentElement.selectNodes("//return")(0).textsError=xmlDOC.documentElement.selectNodes("//sError")(0).Text'selectNodes("//NS1:CzyLoginResponse")(0).Text等同于childNodes.item(0).Text'均为返回所有参数字符串相加的总串'str=xmlDOC.documentElement.selectNodes("//NS1:CzyLoginResponse")(0).Text'str=xmlDOC.documentElement.childNodes.item(0).Text'Response.write CzyLogin&"<br />"'Response.write sError&"<br />"Set xmlDOC = nothingElseCzyLogin="false"'Response.Write xmlhttp.Status&" "sError=xmlhttp.StatusTextEnd ifSet xmlhttp = Nothing
End Function
%>

其中最关键是如何获取WebService接口函数所在的命名空间,我们可以在Delphi中使用Web App Debug模式调试C/S客户端的方法来获取xml文件格式和命名空间,如:

例如:

在<NS1:CzyLogin xmlns:NS1='urn:uAdminIntf-IAdmin'>

和xmlhttp.setRequestHeader "SOAPAction", "urn:uAdminIntf-IAdmin#CzyLogin"中,

uAdminIntf-IAdmin就是CzyLogin接口方法函数所在的命名空间,命名空间描述文本由“接口单元名-接口名”构成,接口描述文本由“命名空间#接口名称”构成,如下图:

Test.asp测试文件:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
<%Response.charset="utf-8"%>
<!-- #include file="webservices.asp"-->
<%Dim czyid,czypwd,sErrorczyid = "admin"czypwd = "admin123"sError = ""Response.Write "czyid='"&czyid&"'<br />"Response.Write "czypwd='"&czypwd&"'<br />"Response.Write "sError='"&sError&"'<br />"Response.Write "执行<br />"Response.Write "status=CzyLogin(czyid,czypwd,sError)"Response.Write "<br />结果:<hr />"status=CzyLogin(czyid,czypwd,sError)Response.write "status="&status&"<br />"If status="true" ThenResponse.write "登录成功!"elseResponse.write "登录失败!sError="&sErrorEnd If
%>

运行结果: 下图为登录失败的执行结果:

下图为登录成功的执行结果:

测试代码下载:http://download.csdn.net/detail/xieyunc/9764212

ASP如何调用Delphi开发的WebService服务相关推荐

  1. c#调用java开发的webservice_用C#.NET调用Java开发的WebService传递int,double问题

    用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...

  2. java调用webservice_WebService学习总结(四)——调用第三方提供的webService服务

    只为成功找方法,不为失败找借口! 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气 ...

  3. 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获

    2019独角兽企业重金招聘Python工程师标准>>> 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值! 用C#.NET调用 ...

  4. c# 调用java webservice 参数获取不到_用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!...

    用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...

  5. WebService学习总结——调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据.气象中心的管理系统将收集 ...

  6. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决

    在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决 参考文章: (1)在Android中调用KSOAP2库访问webservice服务出现的服务端 ...

  7. 调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  8. Java调用.net开发的webService接口

    若一个webservice接口是以.asmx格式来结尾的话,则表明该接口是.net开发的接口 例如:http://www.webxml.com.cn/WebServices/TranslatorWeb ...

  9. C#调用Delphi开发的DLL报内存写保护的错误信息

    相信很多使用c#的朋友碰到过类似的问题,我今天在开发中也碰到类似问题,希望能给大家一点启示吧! 在delphi中申明的函数原型为 function aa(var writedate:pchar;var ...

最新文章

  1. 工作10年,创业5年后,关于人生,我的5点思考
  2. PyCharm:选择内容多个光标解决办法
  3. Webpack介绍和使用(配置环境变量,打包依赖)
  4. Matlab基本函数-hidden函数,matlab中hidden off有什么用?
  5. 《心欢喜,灵快乐》出版
  6. linux之history和!命令联合使用
  7. 邮件作为证据如何提交_电子邮件如何取证、举证?
  8. [机器学习导论]——第三课——神经网络Ⅰ
  9. 易语言 自动更新替换自身 的方法
  10. 智慧图书馆管理系统提升服务水平和工作效率
  11. <PCI-E> PCI-E的 x1/x4/x8/x16 四种插槽区别
  12. 手机连接电脑热点后,无法上网
  13. pytorch 中 .detach() .detach_() 和 .data的区别
  14. day16 正则检测、匹配次数、分组与分支、re模块、匹配参数
  15. html怎么定义403页面,自定义 403 错误页面(示例代码)
  16. 服务器没有显示器能接笔记本吗,笔记本能连显示器吗,笔记本怎么才能接显示器(图文)...
  17. Python基础语法学习6
  18. 间隔十年重新更新微博
  19. 编程金融小白学 股票期权 lv.7 希腊字母 Theta
  20. Win7/Win8安装我们无法创建新的分区,也找不到现有的分区的解决方法

热门文章

  1. 什么是DQL?其含义及其常用命令解析
  2. Vue学习——【第二弹】
  3. 国内软件加密锁产品评测
  4. 如何在大数据时代更好的保护自己的个人信息
  5. 大数据时代下“被直播”问题现状调研报告
  6. gin redis 链接不上_Redis通俗易懂丶 - 夜雨秋池
  7. vscode通过插件一键运行 c++单元测试
  8. 如何将一篇文档中的参考文献导出到Endnote
  9. 推荐5款免费的高清壁纸
  10. 利用AudioContext来实现网易云音乐的鲸鱼音效