Delphi7 调用C# .Net 2.0 webService 执行数据更新功能的说明

本文解决Delphi调用C#.Net WebService在更新数据服务中插入数据失败的问题,通过在C# WebService文件中引入特定命名空间和调整属性即可实现数据正确传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近项目中需要用Delphi调用C# .Net 2.0 webService, 根据一些通用的办法, 很快把.net 的DataSet数据集的数据提取出来了, 但是在更新数据的服务中插入数据一直不能成功, 在Delphi传入的参数根本无法进入web service中, 也就是说传入的其实就是空值.

     在网上找了好多资料, 什么在类接口文件中加入 InvRegistry.RegisterInvokeOptions(TypeInfo(LicenseInfoSoap), ioDocument);,

设置属性 RIO.Converter.Options :=RIO.Converter.Options + [soUTF8InHeader,soUTF8EncodeXML,soLiteralParams] 之类的,  这些统统都是扯淡, 根本不需要在Delphi中进行处理的, 问题就不在Delphi上.

    很简单只需要在C#的webService文件中引入 using System.Web.Services.Protocols;命名空间, 加入属性 [SoapRpcService(RoutingStyle = SoapServiceRoutingStyle.SoapAction)]  . 再把WebServiceBinding属性调整一下, 换成 [WebServiceBinding(ConformsTo = WsiProfiles.None)]就大功告成了. 最后的 属性代码段 如下所示:

    [WebService(Namespace = "http://tempuri.org/")]
//    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [SoapRpcService(RoutingStyle = SoapServiceRoutingStyle.SoapAction)]
    [System.ComponentModel.ToolboxItem(false)]
    [WebServiceBinding(ConformsTo = WsiProfiles.None)]

 

 

还有一种简易调用WebService的方法:

var
  SoapClient: OleVariant;
begin
  SoapClient := CreateOleObject('MSSOAP.SoapClient');
  SoapClient.mssoapinit('http://localhost/ws/Service1.asmx?wsdl');
  showmessage(SoapClient.GenQRCode(Trim(LotSN.Text), Trim(InputInfo.Text)));
end;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值