Fórum Idhttp metodo get está resultando quot;invalid requestq #272324
14/03/2005
0
estou criando uma form que faz um registro, ou cadastro, de um cliente via web, estou usando o idhttp com método get.
Tudo funciona tranquilo, mas se uma das variaveis do tipo string, como a razão do cliente , por exemplo, tiver um caracter ´ ´ espaço, tipo ´minha empresa´, então ocorre o erro de ´invalid request´. Se tiver acentos ou ç também da esse erro.
Tem alguma função que formata essas strings direitinho pra mim? tipo substitui ´ ´ espaço por ¬20, ou í por iacute, sei lá.
Tentei fazer uma função que suprimisse qualquer caracter acentuado. beleza, funcionou, mas na hora de substituir espaço por ¬20 deu outro erro moh estranho. Nem sei o que fazer. por enquanto estou substituindo espaço por ´_´.
Alguém tem alguma sugestão?
ValeW!!!
Vitor Rubio
Curtir tópico
+ 0Posts
14/03/2005
Massuda
uses IdURI, .... var S: string; .... S := := TIdURI.ParamsEncode(´gn=grupo local&cidade=São Paulo´); // S contem ´gn=grupo¬20local&cidade=S¬E3o¬20Paulo´
Gostei + 0
15/03/2005
Vitor Rubio
Você disse que era uma função de classe e que eu não precisava criar uma instância desssa classe. O que significa um método de classe? Isso significa que eu não preciso criar uma variável do tipo TIdURI ? Como pode ser isso, por exemplo, como eu crio métodos assim, desse tipo, nas minhas classes?
Valew!
Gostei + 0
15/03/2005
Massuda
Isso tem alguns inconvenientes... por exemplo, você não pode fazer referencia direta aos membros e métodos normais da classe (pois eles estão atrelados a uma instância da classe). De certa maneira, não é muito diferente de implementar funções e procedures não-relacionadas com classes.
Normalmente isso é utilizado para agrupar grupos de funções/procedures com algo em comum ou que são helpers para uma classe (como no caso do TIdURI.EncodeParams).
Não tenho certeza se isso acontece com o Delphi para .Net, mas no C# onde tudo é uma classe, é comum encontrar métodos de classe.
[quote:dd7547a581=´vitor^_^´]Como pode ser isso, por exemplo, como eu crio métodos assim, desse tipo, nas minhas classes?[/quote:dd7547a581]use a palavra reservada [b:dd7547a581]class[/b:dd7547a581]:
type TExemplo = class .... FExemplo: TAbc; .... class function Exemplo1(...): TXyz; // função de classe class procedure Exemplo2(...); // procedure de classe ....
Gostei + 0
15/03/2005
Vitor Rubio
eu usei a função do jeito que vc falou, mas deu a seguinte exception:
eidhttpProtocolException com a mensagem:
<!DOCTYPE HTML PUBLIC ´-//IETF//DTD HTML 2.0//EN´>
o que é isso, estou usando protocolo 1_1, não existe 2_0, se é que é esse o problema...
Valew!
Gostei + 0
15/03/2005
Massuda
Como você está usando Get, seria possível você abrir a URL que você está tentando acessar diretamente no seu navegador... experimente testar com a URL que o Indy está gerando.
Gostei + 0
15/03/2005
Vitor Rubio
de qualquer forma agora funcionou, Valew!!!
Gostei + 0
15/03/2005
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)