Fórum Erro de caractere inválido #376366
26/04/2010
0
Prezados, estou com erro "caractere inválido" em um sistema soap, não é em todas as
consultas que apresenta esse erro.
na versão do WSDL é
<?xml version="1.0" encoding="ISO-8859-1"?>
quando importo para o delphi fica da senguite forma NO .PAS
InvRegistry.RegisterInterface(TypeInfo(MacMensageria), 'http://www.xxxx.com.br/XXXXMacMensageria/', 'UTF-8');
Existe uma forma de deixar esses carateres compativel com o delphi?
Existe algum parametro de configuração no Delphi 2010 que arruma-se esse problema?
Help.
Henrique
Henrique Rocha
Curtir tópico
+ 0Posts
27/04/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
27/04/2010
Henrique Rocha
<dataVencimentoLimiteCredito>1900-01-01</dataVencimentoLimiteCredito>
<qtdeParcelasEmAtraso>1</qtdeParcelasEmAtraso>
<qtdeParcelasPagas>0</qtdeParcelasPagas>
<qtdeParcelasAVencer>0</qtdeParcelasAVencer>
<nomeAssessoria>XXXC SERVIyOS DE COBRANyA E TELEMARK</nomeAssessoria>
<dddAssessoriar>11</dddAssessoria>
<telAssessoria>33343463</telAssessoria>
<nomeCredenciadoJsg/>
<dddCredenciadoJsg>0</dddCredenciadoJsg>
<telCredenciadoJsg>0</telCredenciadoJsg>
problema do caracter inválido: ONDE OS CARTACTES COM Ç retorno um y
Achei um post com esse problema porém ele usa um documento XML, no meu
caso uso soap. segue o link
http://www.caiooliveira.com.br/?p=422
Existe alguma diretiva no compilador do delphi 2010 onde eu deixe que ele faça
a conversão automática?
Ou tenho que configurar alguma coisa no Delphi?
Obrigado.
Henrique
Gostei + 0
27/04/2010
Wesley Yamazack
Estou pesquisando por aqui, peço que aguarde um pouco, teria como me mandar o link para que eu pudesse fazer um teste de importação aqui ?
Att,
Wesley Y
Gostei + 0
27/04/2010
Henrique Rocha
manter confidencialidade.
Mas é um wdsl soup. segue um trecho do arquivo:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.XXXX.com.br/XXXXMacMensageria/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="XXXXMacMensageria" targetNamespace="http://www.XXXX.com.br/XXXXMacMensageria/"> <wsdl:types> <xsd:schema xmlns:mrm="http://www.XXXX.com.br/XXXXMacMensageria/" targetNamespace="http://www.XXXX.com.br/XXXXMacMensageria/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.XXXX.com.br/XXXXMacMensageria/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="consultarInformacoesCobrancaResponse" type="mrm:ConsultarInformacoesCobrancaResponse"/> <xsd:element name="consultarInformacoesCobrancaRequest" type="mrm:ConsultarInformacoesCobrancaRequest"/> <xsd:complexType name="ConsultarInformacoesCobrancaRequest"> <xsd:sequence> <xsd:element name="codigoAssessoriaCyber" type="xsd:int" minOccurs="1" maxOccurs="1"> <xsd:annotation> <xsd:documentation> Código da assessoria no cyber </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="contaCorrente" type="xsd:long" minOccurs="1" maxOccurs="1" /> <xsd:element name="codigoIdentificacaoOperador" minOccurs="1" maxOccurs="1" type="xsd:string"> <xsd:annotation> <xsd:documentation> Código do operador que está realizando a operação </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="tipoPessoa" minOccurs="1" maxOccurs="1" type="xsd:string"> <xsd:annotation> <xsd:documentation> Tipo de pessoa do CPF/CNPJ Informado. "F" para pessoa fÃsica, "J" para pessoa jurÃdica </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="cpfCnpj" minOccurs="1" maxOccurs="1" type="xsd:long"> <xsd:annotation> <xsd:documentation> CPF/CNPJ do cliente a ser pesquisado </xsd:documentation> </xsd:annotation> </xsd:element>
Gostei + 0
28/04/2010
Wesley Yamazack
Seguinte andei pesquisando aqui e achei um material explicativo sobre o problema.
Ao consumir em Delphi win32 Webservices escritos em Delphi .Net 1.1(e noutras plataformas também), podem ocorrer erros relacionados com caracteres acentuados e cedilhados.
Por exemplo ao tentar enviar este tipo de caracteres, estes podem não ser interpretados e aparecer no seu lugar outros símbolos (??##). Ocorre porque no SOAP interface criado a partir do WSDLImporter não fica especificado o Encoding correcto e ao ser criado SOAP Envelope este converte os caracteres noutro simbolo.
Para o fazer devemos explicitamente declarar o uso de um encoding no Header do SOAP Envelope. No HTTPRio:
HTTPRIO.HTTPWebNode.UseUTF8InHeader := True ;
Tente incluir esta clausula para ver se resolvemos o problema, me avisa que senão resolver damos outro jeito.
Um abraço
Wesley Y
Gostei + 0
28/04/2010
Henrique Rocha
incluir a clausula mas o erro persiste, veja o codigo abaixo se esta correto.
segue a função:
function GetMacMensageria(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): MacMensageria;
const
defWSDL = 'XXXXXMacMensageria.wsdl';
defURL = 'https://XXX.XX.X.XXX:XXXXX/MacMensageria';
defSvc = 'XXXXmacMensageria';
defPrt = 'MacMensageriaSOAP';
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr := defURL
else
Addr := defURL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
RIO.HTTPWebNode.UseUTF8InHeader := True ;
try
Result := (RIO as MacMensageria);
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
achei outra solução mas não sei como usar segue o link...
http://www.galhano.com/firebirdpt/?p=100
No aguardo,
obrigado.
Henrique
Gostei + 0
29/04/2010
Wesley Yamazack
Att,
Wesley Y
Gostei + 0
29/04/2010
Wesley Yamazack
Andei pesquisando e consultando outras fontes, isso esta me parecendo problema de Unicode, você teria que ver com quem fez o WebService, como os dados tem que trafegar, se é por UTF8 ou algum outro tipo. Descobrindo isso você conseguira ter ideia de como trafegar mas para isso tem que descobrir o padrão primeiro.
Att,
Wesley Y
Gostei + 0
04/05/2010
Wesley Yamazack
Att,
Wesley Y
Gostei + 0
07/05/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
10/05/2010
Devmedia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)