Не удается получить строковый параметр в C# WS из клиента delphi
Приветствую вас!
У меня глупый вопрос, потому что я хотел бы получить некоторую помощь. Я практикую вызов веб-сервисов из Delphi7. Я тестирую его с помощью WS, сделанного в C# 2010. Это то, что я получил до сих пор:
Это веб - служба на языке Си#:
public class Service1 : System.Web.Services.WebService { [WebMethod] public int countChars(string text) { int n = 0; if (text != null) return text.Length; else return n; } }
Это веб - клиент в Delphi (просто форма с кнопкой и объектом SOAP):
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, InvokeRegistry, Rio, SOAPHTTPClient, StdCtrls, Service1; type TForm1 = class(TForm) Button1: TButton; Serv: THTTPRIO; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var size : Integer; begin try size := (Serv as Service1Soap).countChars('Hello'); ShowMessage(IntToStr(size)); except on e:Exception do begin ShowMessage(e.Message); end end end; end.
Дело в том, что когда я действительно звоню в веб-службу, текст принимается как нулевая запись, а не слово "Привет".
Что я уже пробовал:
Я попытался перейти на PChar в Delphi. Ищу информацию в интернете. Даже читал о BTSr, но понятия не имел, как его использовать (я предполагаю, что это для COM-вещей). Интересно, почему я все время получаю нулевую строку. Что я упускаю?
Отредактированный: Похоже, у меня возникает похожая проблема с целыми числами. Попытался сделать сложение между 2 числами (4 и 5), и в результате я получаю 0.
Веб-Метод C# :
[WebMethod] public int sumAB(int a, int b) { return a + b; }
Delphi вызов метода:
procedure TForm1.Button1Click(Sender: TObject); var sum, a, b : Integer; begin a := 5; b := 4; sum:= (Serv as Service1Soap).sumAB(a,b); ShowMessage(IntToStr(sum)); end;