Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Atomus

Post com Delphi 5

Recommended Posts

Galera, alguém pode me dizer como que eu crio campos e envio os mesmos para uma página web usando o método post sem usar o Indy? Uso o Delphi 5 aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagine um formulário HTML configurado para enviar dados com o método POST, com seus edits, textareas, comboboxes, files etc etc. E ao clicar e um botão submit, ele envia esses dados para a página web indicada na propriedade "action". Eu queria saber como posso fazer isso no Delphi 5, como que crio campos dinâmicos e envio para uma página web usando o método post, de modo que na página de quest eu consiga recuperar esses dados. Enviar via get eu até consegui (ex: recebe_dados.asp?Nome=Fulano&Idade=18), mas o get tem um limite de 1k e não atende o meu caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,estou usando o camponente TWebBrowser para fazer Post em uma página. Estou tentando enviar vários arquivos, porém com o componente só é enviado um arquivo. Além disso, preciso pegar as informações de retorno após o envio. Como que eu faço um refresh após cada envio. Tentei usasr o refresh do componente porém sempre ocorre um erro.Se alguém puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei usar o evento OnDocumentComplete, porém no caso de envio de dois arquivos somente entra nesse evento depois do envio do último arquivo. Eu não consigo pegar o retorno do envio do primeiro arquivo.

Fiz um teste colocando um ShowMessage depois do envio de cada arquivo aí sim ele entra duas vezes no evento OnDocumentComplete, mas não entendi o porque ocorre isso. Será que você saberia uma outra forma de fazer isso???

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se criasse uma função, que no caso ela ficaria chamando o TWebBrowser de acordo com o n° de arquivos, no caso se tiver dois arquivos, a função iria chamar duas vezes ele, podendo assim primeiro concluir um arquivo, tratar a mensagem e depois começar o outro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo isso. Tenho uma função que é chamada tantas vezes quanto o número de arquivos. O código referente ao WebBrowser é o mesmo que foi sugerido em um dos tópicos, só fiz as alterações que eu precisava:

 

EncodedDataString:= 'CGC_Origem=' + HTTPEncode(Origem)+'&'+

'Nome_Arquivo=' + HTTPEncode(FileName)+'&'+

'CGC_Destino=' + HTTPEncode(Destino)+'&'+

'Tipo_Documento=' + HTTPEncode(TipoDoc)+'&'+

'Tamanho_Arquivo=' + HTTPEncode(Tamanho)+'&'+

'Id_Usuario=' + HTTPEncode( UserId )+'&'+

'Conteudo_Arquivo=' + HTTPEncode(Conteudo);

 

PostData:= VarArrayCreate([0, Length(EncodedDataString)-1], varByte);

 

for i:= 1 to Length( EncodedDataString ) do

PostData[i-1]:= Ord(EncodedDataString);

 

Headers:= 'Content-type: application/x-www-form-urlencoded'#10#13;

 

wbUploadEmviaPOP.Navigate(http://www.minhapagina.com.br/upload.asp' , EmptyParam, EmptyParam, PostData, Headers);

 

O script me retorna um valor 0 se o post ocorreu com sucesso e também um id do arquivo. Com esse id eu devo renomear o arquivo original e trocar de diretório. O problema é que eu não estou conseguindo obter o retorno de todas as chamadas, apenas da última.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso somente consegue da última pois as demais logo que acaba já é chamado navamente a função para navegar novamente... Não teria como criar um flag de controle ? No caso somente depois que completou o documento e for salvo as informações necessárias você permite passar para o próximo...Poderia até mesmo adicionar os itens dentro de um StringList, e ir controlando por ali mesmo, no caso poderia ser um procedure que você chama uma vez, ele pega o primeiro registro do StringList e executada, remove ele da listagem, neste caso vai ser executado o WebBrowser, no OnDocumentComplete, você criaria todas as validações que precisa, e ali mesmo depois chama novamente a procedure, na procedure ele pega o próximo registro a ser executado... e assim vai indo até acabar... Uma idéia de como poderia controlar estas chamadas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio, eu utilizei uma flag de controle para que não tentasse enviar o próximo arquivo até que eu realizasse as verificações e validações no evento OnDocumentComplete. O problema é que ele não entra nunca nesse evento. Já não sei mais o que fazer. se puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

 

estou tendo problemas em fazer um Post em um script ASP. Já tentei usar o TWebBrowser e não consegui porque preiso pegar o retorno do script e estou tentando enviar dois arquivos, porém só consigo utilizar o evento OnDocumentComplete no envio do último arquivo. Alguém já fez Post usando um desses dois componentes: TAdvHTTP ou TNMHTTP no Delphi 5????

Quem puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.