Здравствуйте, Shtirliz, Вы писали:
S>Его нужно сделать. Попробуй.
S>Вот пример моего
S>Клиент:
S>S> ITradeData = interface(IAppServerSOAP)
S> ['{DD6BCD69-BE2F-47A7-9B63-CED004B6711E}']
S> ....
S>
S>Сервер:
S>S> ITradeData = interface(IAppServerSOAP)
S> ['{69CDFDAD-9CD6-45A1-8E49-AD09F3D66930}']
S> ....
S>
S>А теперь почувствуй разницу... Или это тока у меня так... Но думаю нет.
S>Удачи.
Сделал импорт, получил файл
unit ICentimeterInch1;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
TCurrency = class; { "urn:CentimeterInchIntf" }
TCurrency = class(TRemotable)
private
FExchangeRate: double;
FName: string;
public
property ExchangeRate: Double read FExchangeRate write FExchangeRate;
property Name: string read FName write FName;
end;
ICentimeterInch = interface(IInvokable)
['{09FE3389-9018-EA11-C830-E3BDFBB2B4C4}']
function Cm2Inch(const Inch: Double): Double; stdcall;
function Inch2Cm(const Cm: Double): Double; stdcall;
function GetCurrency(const aCurrency: TCurrency): TCurrency; stdcall;
end;
function GetICentimeterInch(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): ICentimeterInch;
implementation
function GetICentimeterInch(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): ICentimeterInch;
const
defWSDL = 'http://localhost/project1.exe/wsdl/ICentimeterInch';
defURL = 'http://localhost/project1.exe/soap/ICentimeterInch';
defSvc = 'ICentimeterInchservice';
defPrt = 'ICentimeterInchPort';
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
Result := (RIO as ICentimeterInch);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
initialization
InvRegistry.RegisterInterface(TypeInfo(ICentimeterInch), 'urn:CentimeterInchIntf-ICentimeterInch', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ICentimeterInch), 'urn:CentimeterInchIntf-ICentimeterInch#%operationName%');
RemClassRegistry.RegisterXSClass(TCurrency, 'urn:CentimeterInchIntf', 'TCurrency');
end.
Теперь беру интерфейсы от сюда. Ничего не изменилось.
Ты не мог бы кинуть мне на мыло ( samara_den@mail.ru ) исходнички для сервера и клиента (так, чтобы просто перекомпилить и работало)? Я бы наверное сам разобрался.