Ver Mensaje Individual
  #2  
Antiguo 29-08-2007
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 18
rolandoj Va por buen camino
Smile Solución

Hola,

De antemano gracias a cualquiera que haya pensado una solución y si es diferente a la que acabo de encontrar, agradecería si pudiera compartirla.

La solución que encontré fué usar un TStringStream en lugar de TStrings como parámetro de entrada. Es decir, usé la segunda forma del método sobrecargado Post, o sea :

procedure Post(URL: string; const Source, AResponseContent: TStream);

La conclusión es que, para mantener la compatibilidad, en Indy 8 debe usarse solo este método y no la otra versión del mismo.

He hecho varias pruebas y al parecer está trabajando bien. De todas formas, si alguién conoce algunos otros puntos de incompatibilidad de versiones, o algo de las razones para el cambio hecho en Indy, mucho agradecería si los comentara aquí.

Cita:
Empezado por rolandoj Ver Mensaje
Hola,

Tengo una aplicación con Delphi 4 e Indy 8. Estoy migrando a Delphi 2007 (Update 1), el cual trae Indy 10.

El problema es que no funciona la llamada al método Post de TIdHTTP. Post es un método sobrecargado; pero solo estoy usando la llamada que en Indy 8 tenía la siguiente definición:

procedure Post(URL: string; const Source: TStrings; const AResponseContent:
TStream);

La razón por la cual falla es que en la versión 10 está transformando el fin de línea (CR + NL) en un caracter &. De acuerdo al sistema de Ayuda, esa conversión es el comportamiento normal bajo Indy 10; pero no indica porque cambiaron el comportamiento que traían de Indy 8 (no sé si lo hicieron en Indy 9) ni como hacer para que el componente en Indy 10 emule el comportamiento de la versión 8; de hecho ni siquiera advierten de ese cambio.

He intentado varias combinaciones con los parámetros de opciones de TIdHTTP; pero ninguna ha funcionado.

Cambiar el servidor para que reconozca el & como equivalente a CR + NL no es una solución viable.

La única solución que tengo hasta el momento es desmontar Indy 10 de Delphi 2007 e instalar Indy 8; pero quiero hacerlo solo como último recurso.

Alguno podría indicarme una solución diferente ?. Más aún, alguién sabe si aparte de este problema hay otras diferencias entre las dos versiones que afecten el comportamiento de TIdHTTP y en tal caso como hacer para emular totalmente el comportamiento viejo ?.
Responder Con Cita