1.Delphi
如今 Web Service 已越来越火了,在DotNet已开发的Web Service中,Delphi 7如何方便的调用DotNet写的Web Service呢?
方法有两种,一种是在Delphi 7中WSDLImp工具将DotNet写的Web Service转化为Interface 单元文件,另一种方法是用MS 提供的 Microsoft Soap Toolkit(MSST) 工具。
下面是用WSDLImp工具调用C# 写一个简单的 Web Service:
启动 VS.Net工具,在C#项目中,选择 ASP.Net Web服务,在代码中写入
[WebMethod]
public double add(double s1, double s2)
{
return s1+s2;
}
生成配件后,在IE 中输入 http://localhost/ASPNETWS/Service1.asmx
会看到 有一个 add 的链接,点击进入,并调用测试:
如,输入 s1为 34, s2为 235.34 调用后为
输入 http://localhost/ASPNETWS/Service1.asmx?WSDL,可看到WSDL单元
测试成功后,在Delphi 7的Bin目录找到 WSDLImp.exe工具,并拷到一处,
在 命令提示符 中输入 WSDLImp http://localhost/ASPNETWS/Service1.asmx?WSDL
会在当前目录中生成一个 Service.pas 文件,这就是要在Delphi中使用的Interface文件。
启动Delphi 7,新建 Application工程,放入一个TButton组件;
在uses 中加入 InvokeRegistry, Rio, SOAPHTTPClient, Service1;
procedure TForm1.btn_CShapWSClick(Sender: TObject);
var
WSResult: Double;
WSIServer: Service1Soap;
begin
WSIServer:= GetService1Soap(true,'',HTTPRIO1);
WSResult:= WSIServer.add(23,342.234);
showmessage('WSResult: '+ FloatToStr(WSResult));
end;
获取 C#编写的Add方法。
以上在 VS.Net(C#), Delphi 7中编写通过!
使用Delphi和WebServices技术开发短信应用程序 | |
关键字:Delphi;Web Service;短信应用程序开发 一提起基于Web Services技术的应用程序开发,一般人首先想到的开发工具是Vs.net,其实作为快速应用程序开发工具(RAD)的老大,Delphi从6.0就开始支持Web Services的开发和应用了,本文通过使用Delphi 7.0调用新浪发送短信的Web Service进行短信应用程序开发这一实例详细的介绍在Delphi中如何开发基于Web Services的应用系统。 第一步,准备工作,了解新浪短信Web Service。新浪发送短信的Web Service地址是http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl,该Web Service就只有一个方法,即string sendXml(carrier,userid,password,mobilenumber,content,msgtype)。各个参数全部为string类型,其含义基本如下(可能不正确)。 Carrier:运营商名称,好像可以随便输,建议输入“Sina”,如果输入其他的值,消息发送的特别慢; Userid:您在新浪无线上注册的手机ID,如果您没有在http://sms.sina.com.cn上注册您的手机,你是无法使用本Web Service发送短信的; Password:您在新浪无线上注册手机时所使用的密码; Mobilenumber:对方的手机号码; Content:发送短消息的内容; Msgtype:发送短消息的类型,我估计支持彩信,不过我不知道怎么使用,似乎随便输什么都可以,我使用的是“Text”。 资费标准请参看新浪无线网站上的相关说明,应该是一条一角钱,不过也或者是一条两角线,具体不太清楚。由于其后台可能使用了消息队列机制,在繁忙的时候,可能会有较长时间的延迟。 第二步,先建立一个空白的应用程序。运行Delphi 7,打开[File]->[New]->[Application]菜单,Delphi自动生成一个默认的工程。将默认的窗体Form1改为sms,然后将改工程保存为smsdemo.prj。如下图所示: 图1 第三步,引入Web Service。,打开[File]->[New]->[Other]菜单,在弹出的窗口中选择WebServices Tab页面,然后选择其中的WSDL importer选项,单击OK按钮弹出WSDL importer Wizard窗口,如图2所示。在其上的Location of WSDL File or URL 中输入:http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl (注意,千万不能输错!),单击Next按钮后,再单击Finishi按钮,完成浪发送短信Web Service的引入。此时工程文件中会增加一个名字为smswebservice0101.pas的文件,这是Delphi自动生成的Web Service引入申明文件,不要手工修改他。 图2 第四步,调用Web Service的短信发送接口。在sms窗体中,依次增加四个TEdit控件,一个TButton控件,一个TMemo控件和五个TLabel控件,按图3进行排列和设置。 图3 在smsfrm单元的uses语句中包含smswebservice0101,以便改窗体中能够访问新浪发送短信的Web Service接口。 在发送按钮onClick事件中写入以下代码: procedure Tsms.Button1Click(Sender: TObject); begin Memo1.Text := GetSMSWebServiceSoapPort.sendXml(Edit1.Text, Edit2.Text, Edit3.Text, Edit4.Text, Edit5.Text,''Text''); end; 注意:Edit1、Edit2、Edit3、Edit4、Edit5分别对应界面上的运营商、用户名、密码、对方号码、消息内容;Memo1对应界面上的反馈。 第五步,使用Web Service的短信发送接口进行短信发送。编译、运行smsdemo.prj,在用户名中输入您在新浪无线上注册的手机ID、密码中输入您在新浪无线上的密码,然后再输入对方的手机号码和消息内容,单击发送按钮,稍候片刻,在反馈信息框中将会得到该Web Service的反馈信息,如果一切正常,系统会提示您短信发送成功。 小结 从上面的例子我们可以看到,只要理解了Web Services的概念,在Delphi的帮助下,开发基于Web Services的应用程序将不是一件很困难的事情。Web Services最适合用于开发跨平台和跨网络进行通信(因为使用http协议为防火墙所允许)的程序,可以跨越异质架构,联系客户、供应商、企业伙伴以及企业内部之信息系统,是电子商务B2B、企业信息等集成的最佳解决方案。各个公司只要把商务逻辑“暴露”出来,成为Web Service,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发工具。Web Services是目前很热门也是正在迅速发展着的一项技术,本文只是作者在学习中的一点小体会,肯定有理解不深刻甚或错误的地方,欢迎大家予以指正。 (全文完) 注:本文参考了http://blog.joycode.com/joy/posts/16939.aspx中提供的新浪短信Web Service技术,在此表示感谢。
3.CompilerVersion 常量 4.ExitProcessProc 变量 var ExitProcessProc: procedure; 5.GetFileVersion 函数 function GetFileVersion(const AFileName: string): Cardinal; 6.GetModuleName 函数 function GetModuleName(Module: HMODULE): string; 7.HInstance 变量 var HInstance: LongWord; 8.HintWindowClass 变量 var HintWindowClass: THintWindowClass = THintWindow; 9.InitProc 变量 var InitProc: Pointer; 10.IsConsole 变量 var IsConsole: Boolean; 11.IsLibrary 变量 var IsLibrary: Boolean; 12.JITEnable 变量 var JITEnable: Byte = 0; 13.Languages 函数 function Languages: TLanguages; 14.MainInstance变量 15.MainThreadID变量 var MainThreadID: LongWord; 16.NoErrMsg变量 var NoErrMsg: Boolean = False; 17.PopupList变量 18.RTLVersion常量 const RTLVersion = 15.0; 19.Screen变量 var Screen: TScreen; 20.Win32Platform变量 var Win32Platform: Integer = 0; |
HTML网页中调用 方法
〈form target="_blank" action='http://www.ydcom.net/service/S_COMM.asmx/GetCZID' method="POST"〉
〈table cellspacing="0" cellpadding="4" frame="box" bordercolor="#dcdcdc" rules="none" style="border-collapse: collapse;"〉
〈tr〉
〈td class="frmHeader" background="#dcdcdc" style="border-right: 2px solid white;"〉参数〈/td〉
〈td class="frmHeader" background="#dcdcdc"〉值〈/td〉
〈/tr〉
〈tr〉
〈td class="frmText" style="color: #000000; font-weight: normal;"〉sTypeNum:〈/td〉
〈td〉〈input class="frmInput" type="text" size="50" name="sTypeNum"〉〈/td〉
〈/tr〉
〈tr〉
〈td〉〈/td〉
〈td align="right"〉 〈input type="submit" value="调用" class="button"〉〈/td〉
〈/tr〉
〈/table〉
〈/form〉
实例:如何调用服务产生18位关键值
相关文档: 使用vbscript脚本调用web服务
ASP中调用方法(SOAP方式)
<%
Dim url,xmlhttp,dom,node,xmlDOC
'根据webservice的测试页不同的方法构造不同的soap request
SoapRequest = " "& _
" "xmlns:xsd="&CHR(34)&"http://www.w3.org/2001/XMLSchema"&CHR(34)&" "& _
"xmlns:soap="&CHR(34)&"http://schemas.xmlsoap.org/soap/envelope/"&CHR(34)&">"& _
" "& _
" "& _
" 311 "& _
" "& _
" "& _
""
url = "http://www.ydcom.net/service/S_COMM.asmx?methodname=GetCZID"
Set xmlDOC =server.CreateObject("MSXML.DOMDocument")
xmlDOC.loadXML(SoapRequest)
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST",url,false
xmlhttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", "http://www.ydcom.net/service/SrvCOMM/S_COMM/GetCZID"
xmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)
xmlhttp.Send(xmlDOC)
If xmlhttp.Status = 200 Then
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlhttp.Status&"
"
Response.Write xmlhttp.StatusText&"
执行结果为:"
Response.Write xmlDOC.getElementsByTagName("GetCZIDResult")(0).text
else
Response.Write xmlhttp.Status&"
"
Response.Write xmlhttp.StatusText
end if
%>
实例:如何使用asp调用服务产生18位关键值 asp源文件代码
说明:总的来讲采用webservice的列表页说明来构造不同的SoapRequest,然后,
从返回xmlDoc中取返回值xmlDOC.getElementsByTagName
ASP中调用方法(HTTP方式)
<%
Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =Server.CreateObject("MSXML.DOMDocument")
strWebserviceURL = "http://www.ydcom.net/service/S_COMM.asmx/GetCZID"
'设置参数及其值
strRequest = "sTypeNum=311"
objHTTP.Open "POST", strWebserviceURL, False
'设置这个Content-Type很重要
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.SetRequestHeader("Content-Length: 30")
objHTTP.Send(strRequest)
bOK = xmlDOC.load(objHTTP.responseXML)
'看看状态值
if objHTTP.Status=200 then
xmlStr = xmlDOC.xml
Response.Write xmlStr
else
Response.Write objHTTP.Statu&"
"
Response.Write objHTTP.StatusText
end if
%>
实例:如何使用asp调用服务产生18位关键值 asp源文件代码
VB6中调用方法
Dim strxml As String
Dim str As String
str = Text2.Text
'定义soap消息
strxml = "
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> " & str &
" "
'定义一个http对象,一边向服务器发送post消息
Dim h As MSXML2.ServerXMLHTTP40
'定义一个XML的文档对象,将手写的或者接受的XML内容转换成XML对象
Dim x As MSXML2.DOMDocument40
'初始化XML对象
Set x = New MSXML2.DOMDocument40
'将手写的SOAP字符串转换为XML对象
x.loadXML strxml
'初始化http对象
Set h = New MSXML2.ServerXMLHTTP40
'向指定的URL发送Post消息
h.open "POST", "http://localhost/TestWebService/Service1.asmx", False
h.setRequestHeader "Content-Type", "text/xml"
h.send (strxml)
While h.readyState <> 4
Wend
'显示返回的XML信息
Text1.Text = h.responseText
'将返回的XML信息解析并且显示返回值
Set x = New MSXML2.DOMDocument40
x.loadXML Text1.Text
Text1.Text = x.childNodes(1).Text
VB.NET中调用方法
1,首先添加web引用,地址为:http://www.ydcom.net/service/s_comm.asmx
2,定义:dim sCom as New net.ydcom.www.S_COMM
3,调用:dim strCZID as string = sComm.GetCZID("313")
实例:如何使用VB.NET调用服务产生18位关键值 VB.NET源文件代码
PB.NET(PB9)中调用方法
SoapConnection conn
Test_wsservice1soap sCom
long rVal
//string str_endpoint
//str_endpoint = "http://www.ydcom.net/service/s_comm.asmx?WSDL"
conn = create SoapConnection
rVal = Conn.CreateInstance(sCom, "test_wsservice1soap")
sle_1.text = sCom.GetCZID("313"))
destroy conn