第二步:将webserivce的WSDL导入到该dll工程中,如何导,方法至少有两种,我说简单的一种: 

file->new->other->WebService->WSDL Importer,(将C#的WSDL输入)然后delphi会自动给你生成了一个pas文件,

(比如我们当前例子的服务地址是:http://localhost/AttributeTesting/AttributeTesting.asmx

如果你想输入WSDL那么就是http://localhost/AttributeTesting/AttributeTesting.asmx?wsdl

function GetServiceSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): ServiceSoap; 
const 
defWSDL = ’http://localhost/webserver/Service.asmx?WSDL’; 
defURL = ’http://localhost/webserver/Service.asmx’; 
defSvc = ’Service’; 
defPrt = ’ServiceSoap’; 
var 
RIO: THTTPRIO; 
begin 
Result := nil; 
if (Addr = ’’) then 
begin 
if UseWSDL then 
Addr := defWSDL 
else 
Addr := defURL; 
end; 
if HTTPRIO = nil then 
RIO := THTTPRIO.Create(nil) 
else 
RIO := HTTPRIO; 
try 
//RIO.HTTPWebNode.UseUTF8InHeader:=True; //

在此添加一句,修改编码方案。 
Result := (RIO as ServiceSoap); 
if UseWSDL then 
begin 
RIO.WSDLLocation := Addr; 
RIO.Service := defSvc; 
RIO.Port := defPrt; 
end else 
RIO.URL := Addr;

RIO.HTTPWebNode.UseUTF8InHeader:=True;//如果出现乱码对于中文参数必须加上 
finally 
if (Result = nil) and (HTTPRIO = nil) then 
RIO.Free; 
end; 
end;

initialization 
InvRegistry.RegisterInterface(TypeInfo(ServiceSoap), ’http://localhost/webserver/’, ’utf-8’);

InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ServiceSoap), ’http://localhost/webserver/%operationName%’); 
//对于无法识别传入的参数的问题,需要手工加上下面这一句>...... 
InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);

3.使用delphi调用上面的dll 
就一个函数,没有什么好说的: 
procedure TForm1.Button1Click(Sender: TObject); 
type 
GetNumTotal=function(a,b:integer):integer;stdcall; 
var 
Th:Thandle; 
Tf:GetNumTotal; 
Tp:TFarProc; 
begin 
Th:=LoadLibrary(’mywebservice.dll’); {装载DLL} 
if Th>0 then 
try 
Tp:=GetProcAddress(Th,PChar(’GetNum’)); 
if Tp<>nil 
then begin 
Tf:=GetNumTotal(Tp); 
Edit1.Text:=IntToStr(Tf(1,3)); {调用GetNumTotal函数} 
end 
else 
ShowMessage(’GetNumTotal函数没有找到’); 
finally 
FreeLibrary(Th); {释放DLL} 
end 
else 
ShowMessage(’mywebservice.dll没有找到’); 
end;

public static extern int GetNum(int a, int b); 
private void button1_Click(object sender, EventArgs e) 

int a,b,i; 
a=10; 
b =20; 
i=GetNum(a,b); //第一次比较慢(webserivce的唯一弊端!!!!) 
textBox1.Text = i.ToString(); 
}

教程-Delphi调用C# WEBSERVICE(二)的更多相关文章

  1. 教程-Delphi 调用控制面板设置功能

    应用程序运行时,有时需要对系统环境有特殊要求.例如,在Delphi数据库应用程序中可能需要进行BDE(Borland Database Engine)或ODBC数据源名称(DSN:Data Sourc ...

  2. 教程-Delphi调用百度地图API(XE8+WIN7)

    unit U_map; interface //---------------------------------------------------// //----------COPY BY 无言 ...

  3. 【转】Delphi调用webservice总结

    原文:http://www.cnblogs.com/zhangzhifeng/archive/2013/08/15/3259084.html Delphi调用C#写的webservice 用delph ...

  4. Delphi调用webservice总结

    Delphi调用webservice总结     Delphi调用C#写的webservice 用delphi的THTTPRIO控件调用了c#写的webservice. 下面是我调试时遇到的一些问题: ...

  5. delphi调用java编写的webservice

    delphi调用java编写的webservice JAVApojo: public class GroupInfo implements Serializable{    private stati ...

  6. delphi 调用Webservice 引入wsdl 报错 document empty

    delphi 调用Webservice 引入wsdl 报错 document empty 直接引入wsdl 地址报错 document empty 解决办法:在浏览器里保存为xml文件,然后在开发环境 ...

  7. Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)

    相关资料:1.http://blog.csdn.net/luojianfeng/article/details/512198902.http://blog.csdn.net/avsuper/artic ...

  8. Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示

    Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示 在 开发中遇到应用c#及asp.net的在的webservice 保存图片并以xml文件形式现实出来 ...

  9. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

随机推荐

  1. Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:思考题——谢勤政11061197

    第一题: 大楼里面的电梯一般分区域,或考虑思考题第四题的情况,运行楼层不一样的电梯属于不同的区域.然后在接口IRequest和IPassenger还有IElevator里面都加上int area这个属 ...

  2. jQuery UI dialog 的使用

    今天用到了客户端的对话框,把 jQuery UI 中的对话框学习了一下. 准备 jQuery 环境 首先,我们创建一个按钮,点击这个按钮的时候,将会弹出一个对话框. 1 <input type= ...

  3. oracle学习之-----操作表中的数据

    1. 向表中添加数据(Insert 语句): 添加的语法: INSERT INTO table_name(column1,column2,column3,......) VALUES(value1,v ...

  4. UVA 11737 Extreme Primitive Society

    非常容易的一个题: 只要判断两种基因相差的最小值就行: #include<cstdio> #include<cstring> #include<algorithm> ...

  5. underscore vs jquery

    http://wordpress.tv/2013/06/23/k-adam-white-underscore-and-backbone-jquerys-new-friends/ http://www. ...

  6. 一个C语言宏展开问题

    转自一个C语言宏展开问题 一个令人比较迷惑的问题,学C语言好多年,今天终于搞明白,记之. ------------------------------------------------------- ...

  7. WP8教程

    http://www.maiziedu.com/courses-list?technology_category=6

  8. POJ 3422 Kaka's Matrix Travels(最小费用最大流)

    http://poj.org/problem?id=3422 题意 : 给你一个N*N的方格,每个格子有一个数字,让你从左上角开始走,只能往下往右走,走过的数字变为0,走K次,问最大能是多大,累加的. ...

  9. Mysql的列索引和多列索引(联合索引)

    转自:http://blog.chinaunix.net/uid-29305839-id-4257512.html 创建一个多列索引:CREATE TABLE test (      id       ...

  10. android 点滴记录 ICCID IMSI IMEI MEID 关系 和 区别,相关参数在什么情况下可以获取...

    1:ICCID:Integrate circuit card identity 集成电路卡识别码(固化在手机SIM卡中) ICCID为IC卡的唯一识别号码,共有20位数字组成,其编码格式为:XXXXX ...