Ir para conteúdo
  • Cadastre-se

dev botao

Uso do synapse fora do ACBR


  • Este tópico foi criado há 4459 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia Galera...

Andei pesquisando o assunto a respeito na net, mas não achei nada muito conclusivo...

Eu preciso utilizar o synapse no delphi 6 fora do uso dos componentes do ACBR.

A ideia é enviar um arquivo XML, login, senha e cidade para um webservice, o retorno seria tbem um arquivo XML.

Será que alguem poderia me auxiliar em como fazer essa conexão e receber esse retorno.

A principio acho que teria que usar um dos metodos de http post do synapse...mas tbem não sei quais as sequencias que preciso usa-lo.

Fico no aguardo.

Att.:

W7 Soluções
Ricardo Mendes
Analista/Programador
Skype: ricardo_w7
[email protected]

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia Galera...

Andei pesquisando o assunto a respeito na net, mas não achei nada muito conclusivo...

Eu preciso utilizar o synapse no delphi 6 fora do uso dos componentes do ACBR.

A ideia é enviar um arquivo XML, login, senha e cidade para um webservice, o retorno seria tbem um arquivo XML.

Será que alguem poderia me auxiliar em como fazer essa conexão e receber esse retorno.

A principio acho que teria que usar um dos metodos de http post do synapse...mas tbem não sei quais as sequencias que preciso usa-lo.

Fico no aguardo.

A documentação do synapse é bem completa com exemplos e demonstrações de tudo que pode ser feito, já tentou dar um pulo na página deles: http://www.ararat.cz/synapse/doku.php/start e dar uma olhada?

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Regys...

Esse foi o primeiro local que cheguei na pesquisa na net...

Mexendo nas coisas conforme os exemplos....mas não conseguir fazer funcioanr...

A principio estou mexendo nas funções HttpPostFile...mas ainda sem sucesso.

Vou continuar vendo o que consigo...obrigado

Att.:

W7 Soluções
Ricardo Mendes
Analista/Programador
Skype: ricardo_w7
[email protected]

Link para o comentário
Compartilhar em outros sites

Regys....

Depois de vascular a net....achei +/- algo que pode ajudar...vou deixar a sequencia que estou fazendo...talvez ajude mais alguem.

Primeiro adicionei um novo metodo na unit httpsend.pas do synapse. Achei isso no proprio site do synapse.

function HttpPostFileForm(const URL, FieldName, FileName: string;

  const Data: TStream; const FormFields:TStrings; const ResultData:

TStrings): Boolean;

var

  HTTP: THTTPSend;

  Bound, s: string;

  i:integer;

const

  FIELD_MASK = CRLF + '--%s' + CRLF +

              'Content-Disposition: form-data; name="%s"' + CRLF + CRLF+

              '%s';

begin

  Bound := IntToHex(Random(MaxInt), 8) + '_Synapse_boundary';

  HTTP := THTTPSend.Create;

  try

    s := '--' + Bound + CRLF;

    s := s + 'content-disposition: form-data; name="' + FieldName + '";';

    s := s + ' filename="' + FileName +'"' + CRLF;

    s := s + 'Content-Type: Application/octet-string' + CRLF + CRLF;

    HTTP.Document.Write(Pointer(s)^, Length(s));

    HTTP.Document.CopyFrom(Data, 0);

    // Include formfield

    for i:=0 to FormFields.Count-1 do

      begin

        S:= Format(FIELD_MASK,[Bound, FormFields.Names[I], FormFields.Values[FormFields.Names[I]]]);

        HTTP.Document.Write(Pointer(S)^, Length(S));

      end;

    s := CRLF + '--' + Bound + '--' + CRLF;

    HTTP.Document.Write(Pointer(s)^, Length(s));

    HTTP.MimeType := 'multipart/form-data; boundary=' + Bound;

    Result := HTTP.HTTPMethod('POST', URL);

    ResultData.LoadFromStream(HTTP.Document);

  finally

    HTTP.Free;

  end;

end;
Depois o meu metodo ficou assim.
function EnviarXMLWeb(pCaminhoArquivo: AnsiString; pLogin, pSenha, pCidade, pWebService: string): AnsiString;

var

  Retorno: AnsiString;

  ArquivoEnviar: TFileStream;

  ParametrosWeb: TStringList;

  RetornoXML: TStrings;

begin

  try


    //Cria o Arquivo que vai ser enviado via Stream

    ArquivoEnviar := TFileStream.Create(pCaminhoArquivo, fmOpenRead);


    //Lista de parametros para conectar no Webservice

    ParametrosWeb := TStringList.Create;

    ParametrosWeb.Add('login=' + EncodeURLElement(pLogin));

    ParametrosWeb.Add('senha=' + EncodeURLElement(pSenha));

    ParametrosWeb.Add('cidade=' + EncodeURLElement(pCidade));


    try

     //Cria um StringList para capturar o retorno...ja que o retorno é um novo XML

      RetornoXML := TStringList.Create;


    //HttpPostFileForm -> Retorna True se deu certo ou False se der erro.

    //pWebService  -> URL a ser utilizada para envio

    //'f1' -> Esse aqui é o parametro que o webservice exige para reconhecer a leitura do arquivo enviado.

    //ExtractFileName(pCaminhoArquivo) -> Extrai o nome do arquivo que estou enviando

    //ArquivoEnviar -> Arquivo que vai ser enviado, já em Stream

    //ParametrosWeb -> Parametros para conectar no webservice

    //RetornoXML -> StringList que vai receber o retorno vindo da WebService.


     if HttpPostFileForm(pWebService, 'f1', ExtractFileName(pCaminhoArquivo),

        ArquivoEnviar, ParamentrosWeb, RetornoXML) then

        Retorno := RetornoXML.Text

      else

      begin

        Retorno := 'Erro ao transmitir/recepcionar xml.';

        Abort;

      end;


    except

      Retorno := 'Erro ao transmitir/recepcionar xml.';

      Abort;

    end;


  finally

    FreeAndNil(ArquivoEnviar);

    FreeAndNil(ParamentrosWeb);

  end;


  Result := Retorno;

end;

Espero que entedam o que escrevi...

Obrigado Régys.

Att.:

W7 Soluções
Ricardo Mendes
Analista/Programador
Skype: ricardo_w7
[email protected]

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4459 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...