PDA

Ver la Versión Completa : THTTPRIO y encoding utf-8


jlcasih
28-05-2007, 22:15:03
Hola, estoy consumiendo desde un servicio desarrollado en delphi 7 un WebService desarrollado con el framework .NET 2.0, el problema que tengo es que el objeto THTTPRIO, cuando envía el XML al servidor, no esta seteando bien el encoding, y por lo tanto los valores WideString llegan con caracteres extraños. Ya intenté seteando las propiedades UseUTF8InHeader a true y las Options. Sabe alguien que puede estar pasando? Agradesco su aporte u algo que sepan al respecto..

Saludos

jlcasih
30-05-2007, 03:38:23
Hola, ya solucione los problemas que tengo, se los comparto por si le sucede a alguien.
1. Al importar el WebService a la unidad creada se le debe agregar en la seccion initialization:
InvRegistry.RegisterInvokeOptions(TypeInfo([Nombre de servicio]),ioDocument);
2. Si se están pasando parametros como WideString, se debe setear las propiedades SetUTF8Header a true del objeto THTTPRIO y se debe modificar la unidad Rio.pas en el evento DoBeforeExecute agregandole la siguiente porción de código al final del metodo:
StrStrm := TStringStream.Create(ReqW);
try
StrStrm.Position := 0;
Request.CopyFrom( StrStrm, 0 );
finally
StrStrm.Free;
end;

y agregar esta unidad al proyecto para que tome los cambios.

Aca va una referencia:
http://www.spectrum.eti.br/news/corrigir_bug_no_componente_thttprio_do_delphi_7_2005_e_2006

3. En algunos casos fue necesario utilizar la función UTF8Decode para cadenas que estaban encodidadas a UTF8 ( en el caso de mails, etc. ).

Bueno espero le sirva a alguien. Saludos.