Usando Delphi 7.0 para acessar um WebService .NET (.asmx)
Pesquisei aqui no fórum e vi que a maioria das dúvidas sobre webservices permaneceram sem respostas, mas sempre há a esperança, espero que algum de voces me ajude.
Seguinte: estive presente a uma palestra no último TechDay sobre WebServices e Delphi 7 do Bruno Lichot, e desde então venho utilizando este recurso com sucesso. Porém agora me deparei com um problema.
As funções de WebServices do Delphi que retornam um DataSet, o retornam num tipo OLEVariant, que pode ser associado a propriedade Data do ClientDataSet.
Porém, por limitações do servidor, tive que desenvolver o WebService em .NET com C# dessa vez, que nao retorna OLEVariant, retorna um tipo maluco qualquer dentro de uma WideString.
Quando eu tento associar esta WideString à propriedade Data de um ClientDataSet obtenho a mensagem de erro: ´Invalid data packet´.
Será que alguém aí podia me dar uma ajuda, uma luz, indicar um site, um livro, ou qualquer coisa que possa me encaminhar a uma solução, pois estou quebrando a cabeça aqui e nao consigo resolver o problema.
Vai aqui o Codigo gerado pelo WSDL Importer do Delphi da funcao que retorna o DataSet:
Detalhe: a funcao HelloWorld funciona perfeitamente, mas é apenas para teste, e retorna apenas uma string simples.
A função pegamenu deveria retornar um dataset. Vai a declaração dessa função em C:
Se alguém puder me ajudar estarei infinitamente agradecido. Obrigado.
Seguinte: estive presente a uma palestra no último TechDay sobre WebServices e Delphi 7 do Bruno Lichot, e desde então venho utilizando este recurso com sucesso. Porém agora me deparei com um problema.
As funções de WebServices do Delphi que retornam um DataSet, o retornam num tipo OLEVariant, que pode ser associado a propriedade Data do ClientDataSet.
Porém, por limitações do servidor, tive que desenvolver o WebService em .NET com C# dessa vez, que nao retorna OLEVariant, retorna um tipo maluco qualquer dentro de uma WideString.
Quando eu tento associar esta WideString à propriedade Data de um ClientDataSet obtenho a mensagem de erro: ´Invalid data packet´.
Será que alguém aí podia me dar uma ajuda, uma luz, indicar um site, um livro, ou qualquer coisa que possa me encaminhar a uma solução, pois estou quebrando a cabeça aqui e nao consigo resolver o problema.
Vai aqui o Codigo gerado pelo WSDL Importer do Delphi da funcao que retorna o DataSet:
type
pegamenuResult = class;
pegamenuResult = class(TRemotable)
private
Fschema: WideString;
published
property schema: WideString read Fschema write Fschema;
end;
wsexemploSoap = interface(IInvokable)
[´{8AE18F11-3667-5B89-77A0-09CB0E74E6B9}´]
function pegamenu: pegamenuResult; stdcall;
function HelloWorld: WideString; stdcall;
end;
Detalhe: a funcao HelloWorld funciona perfeitamente, mas é apenas para teste, e retorna apenas uma string simples.
A função pegamenu deveria retornar um dataset. Vai a declaração dessa função em C:
public DataSet pegamenu()
Se alguém puder me ajudar estarei infinitamente agradecido. Obrigado.
Thiago Vidal
Curtidas 0
Respostas
Maxwell_monteiro
28/04/2004
Eu não conheço muito bem esse tipo WideString! mas se esse tipo contiver dados legiveis e com alguma organização vc pode fazer um algoritmo que transporte esses dados para o client data set! vamos supor esses exemplo:
atributos: codigo, nome
atributos separados por virgula e registros por ponto-virgula
1,joao;2,marcos;3,maria;
Ou seja se o seu Data Set em formato Wide String tiver uma logica de formação que com certeza vai ter. vc pode muito bem fazer um algoritmo vc mesmo para migra-los para o client data set!
atributos: codigo, nome
atributos separados por virgula e registros por ponto-virgula
1,joao;2,marcos;3,maria;
Ou seja se o seu Data Set em formato Wide String tiver uma logica de formação que com certeza vai ter. vc pode muito bem fazer um algoritmo vc mesmo para migra-los para o client data set!
GOSTEI 0