Delphi 7开发Web Service,Asp .Net 调用的问题(300分)

  • 主题发起人 主题发起人 wjiachun
  • 开始时间 开始时间
W

wjiachun

Unregistered / Unconfirmed
GUEST, unregistred user!
看了一些资料,都是简单封装个Hello World的,好像还是不很明白。
利用Delphi 7开发Web Service,Asp .Net 进行调用的问题,描述如下:
假设有Access数据库,一张人员表,结构:
编号 姓名 性别 住址
1 XXX 男 XXXX
……
要求Delphi 7开发Web Service,IIS执行,要能够根据编号查出对应记录的所有信息
如何封装这个Web Service?返回什么信息?利用Asp .Net 又如何进行调用?
请了解的DFW不吝赐教,万分感谢!
 
Intf单元:
在接口声明之前加一个类
TEmployee = class(TRemotable)
private
FID: Integer;
FName: AnsiString;
FSex: AnsiString;
FAddr: AnsiString;
published
property ID: Integer read FID write FID;
property Name: AnsiString read FName write FName;
property Sex: AnsiString read FSex write FSex;
property Addr: AnsiString read FAddr write FAddr;
end;

在接口内添加方法:
function GetEmployeeInfo(const ID: Integer): TEmployee;
stdcall;

Impl单元:
function Txxxxxx.GetEmployeeInfo(const ID: Integer): TEmployee;
begin
//执行类似select * from Employee where iEmployeeID=ID的操作
Result:=TEmployee.Create;
Result.ID:=ID;
Result.Sex:=DataSet.FieldByName('Sex').AsString;
...
end;

如果是用ADO访问数据库,在impl单元的initialization部分要调用CoInitialize(nil);
 
嗯 先感谢 LeeChange, 就是Web Service端定义 TEmployee类(继承TRemotable类),Delphi 7自己的Demo 确实也是这么做的,那么“利用Asp .Net 又如何进行调用?”麻烦也解答一下 :)
本人对于Asp .Net 非常不熟悉,请给个最简单的由文本框输入ID返回所需记录的实例,再次感谢!
 
[黑A]menxin() 15:11:30
用这个把SOAP封装的XML再转成temployee
[黑A]menxin() 15:12:02
SOAP当然是XML
[黑A]menxin() 15:12:05
VS有代理类生成工具
[黑A]menxin() 15:12:32
添加引用就是这个意思,它自动把XML再开成类文件,这样你直接用就可以了
[黑A]menxin() 15:20:56
protected void Button1_Click(object sender, EventArgs e)
{
Itestisapiservice aItestisapiservice = new Itestisapiservice();
TextBox1.Text = aItestisapiservice.GetEmployeeInfo();

}
[黑A]menxin() 15:21:25
<asp:TextBox ID="TextBox1" runat="server" Width="219px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click"
Text="getvalue" />
 
感谢menxin, 感谢LeeChange,等我测试后发分!
 
还要追问一下
delphi做web service时为了避免出现中文乱码
我在服务端用EncodeString将字符串转为base64编码了
在C#.net中测试正确 那么如何将得到的base64编码还原为原来的字符串呢?
就是说C#中想调用类似delphi中的 EncdDecd单元定义DecodeString函数,有没有现成的函数,如何调用?
 
OK 解决了
编码:
byte[] bytes=Encoding.Default.GetBytes("要转换的字符串");
Convert.ToBase64String(bytes);
解码:
//"ztKwrsTj"是“我爱你”的base64编码
byte[] outputb = Convert.FromBase64String("ztKwrsTj");
string orgStr= Encoding.Default.GetString(outputb);
 
接受答案了.
 
后退
顶部