我正在与delphi Tokyo开发服务器Soap。
我有CAPA课程和ITEM课程(1:N)。
开发delphi客户端时,我可以正确发送Capa
和N个Item
。
但是当其他客户端使用另一种语言开发并尝试连接时,无法正确填充ITEM。
我应该如何正确开发Item(N)类?
我有以下代码。
type
Pedido = Class;
Pedido_Response = Class;
Capa = Class;
Item = Class;
Array_of_Item = Array of Item;
Pedido = class(TRemotable)
private
fCapa : Capa;
fItem : Array_of_Item;
public
published
property capa : capa read fCapa write fCapa;
Property Item : Array_of_Item read Fitem write Fitem;
end;
Capa = Class(TRemotable)
private
fID_Capa : String;
fDesc_Capa : String
public
published
property id_capa : String read fID_Capa write fID_Capa;
property desc_Capa : String Read fDesc_Capa write fDesc_Capa;
end;
Item = Class(TRemotable)
private
Fcd_seq_item_cliente : String;// ok
Ftx_acao : String;// ok
Fcd_produto : String;// ok
Ftx_produto : String;// ok
public
published
property cd_seq_item_cliente : String Read Fcd_seq_item_cliente Write Fcd_seq_item_cliente;
property tx_acao : String Read Ftx_acao Write Ftx_acao;
property cd_produto : String Read Fcd_produto Write Fcd_produto;
property tx_produto : String Read Ftx_produto Write Ftx_produto;
end;
IDM4_Pedido = interface(IAppServerSOAP)
['{10251934-5ACA-4279-A8CB-8A7FBF04D33B}']
Function Ping4 : String; stdcall;
Function Pedido_Request(pImportacao : Pedido) : Pedido_Response; stdcall;
end;
TFo_DM4_Pedido = class(TSoapDataModule, IDM4_Pedido, IAppServerSOAP, IAppServer)
private
{ Private declarations }
Function Insere_Pedido(pImportacao : Pedido) : String;
Procedure Inclui_na_Tabela_Pedido(pid_Pedido : Integer; pCapa : Capa);
Procedure Inclui_Item_Pedido(pId_Pedido : Integer; pDados : Item);
Procedure Parametro_Dos_Itens(pDados : Item);
public
{ Public declarations }
Function Ping4 : String; stdcall;
Function Pedido_Request(pImportacao : Pedido) : Pedido_Response; stdcall;
end;
{$R *.dfm}
procedure TDM4_PedidoCreateInstance(out obj: TObject);
begin
obj := TFo_DM4_Pedido.Create(nil);
end;
{-------}
function TFo_DM4_Pedido.Ping4: String;
begin
Result := 'DAMASTE 4 ' + DateTimeToStr(Now);
end;
{-------}
Others Functions and procedures ....
initialization
InvRegistry.RegisterInvokableClass(TFo_DM4_Pedido, TDM4_PedidoCreateInstance);
InvRegistry.RegisterInterface(TypeInfo(IDM4_Pedido));