delphi调用webservice服务

本文介绍了如何使用 Delphi 的 THTTPRIO 控件来调用 C# 编写的 WebService。在调试过程中,遇到的问题包括导入 WSDL 文件时的细节,如末尾的 '?wsdl' 不能省略,以及设置 THTTPRIO 控件的 URL 属性以避免错误。此外,解决了传递参数时 Web 服务端接收为空的问题,通过在接口单元中注册 InvokeOptions 解决。提供了客户端调用 WebService 的简单代码示例。

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

我用delphi的THTTPRIO控件调用了c#写的webservice。

下面是我调试时遇到的一些问题:

1,导入wsdl文件:file--new----other----wenservice---WSDLimporter---输入wsdl地址:如下:http://10.0.1.128:7777/ShineMediaPublish/WebService/WebServiceCall.asmx?wsdl

注意末尾的:'?wsdl'不能少。要不可能会说找不到。

2,设置THTTPRIO控件的属性:

开始把http://10.0.1.128:7777/ShineMediaPublish/WebService/WebServiceCall.asmx?wsdl赋给了wsdlLocation属性。连接时总是报错。

后来赋给URL属性,就不报错了。

3,传递参数是web服务端总为空:

在导入的接口单元的声明部分添加如下代码:

InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceCallSoap),ioDocument);//其中红色部分为导入接口名称。

 

下面是客户端的简单代码:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms,
  Dialogs, InvokeRegistry, StdCtrls, Rio,SOAPHTTPClient,WebServiceCall;

type
  TForm1 = class(TForm)
    htpr1:THTTPRIO;
    edt1:TEdit;
    btn1:TButton;
    procedurebtn1Click(Sender: TObject);
  private
    { Privatedeclarations }
  public
    { Publicdeclarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  s:WideString;
begin
  s:='打分得分';
  edt1.Text:=(htpr1 asWebServiceCallSoap).OperaterLogin('1','dd',s);//operaterLogin为接口方法。

end;

end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值