Ancine - Sistema de Controle de Bilheteria

16/09/2016

0

Boa Noite,

Alguém esta gerando arquivos para o ANCINE (SCB) usando arquivo xml?

Estou tendo em dificuldades na transmissão do arquivo WebService.

No manual:
Uma requisição HTTP completa para o web service do SCB deverá conter os headers semelhantes ao exemplo abaixo:
POST /scb/v1.0/bilheterias HTTP/1.1 Authorization: QWxhZGRpbjpvcGVuIHNlc2FtZQ Content-Type: application/json



ainda no manual no registro da bilheteria diz:
URL: https://scb.ancine.gov.br/scb/v1.0/bilheterias
Método HTTP: POST


Estou testando assim:
procedure TForm1.BtTransmiteClick(Sender: TObject);
Var Response: TStringStream;
  Arquivo: TIdMultipartFormDataStream;
begin
  Response := TStringStream.Create('');
  Arquivo := TIdMultiPartFormDataStream.Create;
  Try
     Arquivo.AddFile('xml', 'c:\\\\\\\\ancine.xml', 'xml/text');
     IdHTTP.Request.CustomHeaders.Clear;
     IdHTTP.Request.Clear;
     IdHTTP.Request.Accept := 'text/xml';
     IdHTTP.Request.ContentType := 'text/xml';
     IdHTTP.Request.BasicAuthentication := True;
     IdHTTP.Request.Authentication := TIdBasicAuthentication.Create;
     IdHTTP.Request.Authentication.Password:= 'QWxhZGRpbjpvcGVuIHNlc2FtZQ';
     IdHTTP.Request.Authentication.Username:= 'admin';
     IdHTTP.Request.ContentEncoding := 'utf-8';
     IdHTTP.Request.Referer := '/scb/v1.0/bilheterias HTTP/1.1';
     IdHTTP.Post('http://scbcertificacao.ancine.gov.br/scb/v1.0/', Arquivo, Response);
  finally
     ShowMessage(Response.DataString);
     Response.Free();
     Arquivo.Free()
  end;
end;


Não estou sabendo onde usar:

URL: https://scb.ancine.gov.br/scb/v1.0/bilheterias
Método HTTP: POST

POST /scb/v1.0/bilheterias HTTP/1.1
Authorization: QWxhZGRpbjpvcGVuIHNlc2FtZQ


Desde já agradeço,

Brigadú
Dirceu Morais

Dirceu Morais

Responder

Post mais votado

19/09/2016

Bem ainda no aguardo de uma resposta.
Pesquisado e quebrando a cabeça tive algum programa.

Primeiramente eu atualizei o meu Indy para 10, ele estava desatualizado.

Com o código abaixo esta retornando erro de socket 400
procedure TForm1.BtTransmiteClick(Sender: TObject);
Var Response: TStringStream;
  Arquivo: TIdMultipartFormDataStream;
begin
  Response := TStringStream.Create('');
  Arquivo := TIdMultiPartFormDataStream.Create;
  Try
     Arquivo.AddFile('xml', 'c:\\ancine.xml', 'xml/text');
     IdHTTP.Request.CustomHeaders.Clear;
     IdHTTP.Request.Clear;
     IdHTTP.Request.Accept := 'text/xml';
     IdHTTP.Request.ContentType := 'text/xml';
     IdHTTP.Request.BasicAuthentication := True;
     IdHTTP.Request.Authentication := TIdBasicAuthentication.Create;
     IdHTTP.Request.Authentication.Password:= 'QWxhZGRpbjpvcGVuIHNlc2FtZQ';
     IdHTTP.Request.Authentication.Username:= 'admin';
     IdHTTP.Request.url := 'http://scbcertificacao.ancine.gov.br/scb/v1.0/';
     IdHTTP.Request.Host := '/scb/v1.0/bilheterias HTTP/1.1';     
    IdHTTP.Request.ContentEncoding := 'utf-8';
     IdHTTP.Request.Referer := '/scb/v1.0/bilheterias HTTP/1.1';
     IdHTTP.Post('https://scb.ancine.gov.br/scb/v1.0/bilheterias', Arquivo, Response);
  finally
     ShowMessage(Response.DataString);
     Response.Free();
     Arquivo.Free()
  end;
end;

Dirceu Morais

Dirceu Morais
Responder

Mais Posts

21/09/2016

Cristiano

Boa Noite Dirceu, tudo bem?

Estou com problema também para envio, tem skype ou então me mande um email cristiano.pedrino@gmail.com
para conversarmos .

Att.
Responder

27/09/2016

Dirceu Morais

Ninguém?
:(
Responder

28/09/2016

Dirceu Morais

Depois de muitas noites sem dormir, consegui ter algum progresso.

Consegui enviar o arquivo só que me retornou o código "HTTP Status 401 - não autorizado"

Pois bem, é necessário passar um token. Este eu já tenho o Token, o problema é que não estou sabendo como passá-lo.

COMO FAÇO PARA PASSAR?


Meu cenário:

Post
https://scbcertificacao.ancine.gov.br/scb/v1.0/bilheterias

Authorization:
Type = Basic Auth
Username=meucodigodeacessoaosite
Password=minhasenha

Hearders:
Content-Type:application/xml
Authorization:Basic MDcyOTM1MjMwMDAxMTI6Y2luZXByaW1l *****

Body:
Raw
xml(Apllication/xml) + meu-arquivo+xml


*** Esta autorização me parece que é a sessão, pois muda.
*** Tentei passar o token assim: Authorization:Basic qp10pql1q8mpioqkq9551165qbgian
e assim: Authorization:qp10pql1q8mpioqkq9551165qbgian

Mais não funfou.
Responder

28/09/2016

Dirceu Morais

Depois de muitas noites sem dormir, consegui ter algum progresso.

Consegui enviar o arquivo só que me retornou o código "HTTP Status 401 - não autorizado"

Pois bem, é necessário passar um token. Este eu já tenho o Token, o problema é que não estou sabendo como passá-lo.

COMO FAÇO PARA PASSAR?


Meu cenário:

Post
https://scbcertificacao.ancine.gov.br/scb/v1.0/bilheterias

Authorization:
Type = Basic Auth
Username=meucodigodeacessoaosite
Password=minhasenha

Hearders:
Content-Type:application/xml
Authorization:Basic MDcyOTM1MjMwMDAxMTI6Y2luZXByaW1l *****

Body:
Raw
xml(Apllication/xml) + meu-arquivo+xml


*** Esta autorização me parece que é a sessão, pois muda.
*** Tentei passar o token assim: Authorization:Basic qp10pql1q8mpioqkq9551165qbgian
e assim: Authorization:qp10pql1q8mpioqkq9551165qbgian

Mais não funfou.
Responder

30/09/2016

Dirceu Morais

Depois de dias e dias quebrando a cabeça consegui passar a autorização. :)



IdHTTP1.IOHandler:= IdSSLIOHandlerSocketOpenSSL1;
IdHTTP1.Request.CustomHeaders.AddValue('Authorization', 'MDcyOTM1MjMwMDAxMTI6Y2luZXByaW1l ');
XMLDocument1.XML.Text:= IdHTTP.Post('https://scb.ancine.gov.br/scb/v1.0/bilheterias', Arquivo, Response);
Responder

03/10/2016

Dirceu Morais

HELP

Consegui passar autorização, conforme postagem anterior, agora estou tentando obter o retorno do Webservice quando tem algum erro e não estou conseguindo.

Utilizei o complemento do Google Postman e nele me dá o arquivo retorno.

No caso do meu codigo + xml está me devolvendo o código 422, tanto no Postman quando no meu código,

Como faço para visualizar o retorno? É algum componente?

Meu codigo:
Var Response: TStringStream;
   XArquivo : TMemoryStream; 
begin  
  Response := TStringStream.Create(''); 
  XArquivo := TMemoryStream.Create;
  Try  
     XArquivo.LoadFromFile('d:\\sistema\\arquivo.xml');
     IdHTTP.Request.CustomHeaders.Clear;
     IdHTTP.Request.Clear;
     IdHTTP.ConnectTimeout := 30000;
     idHTTP.OnAuthorization := IdHTTPAuthorization;
     IdHTTP.Request.ContentType := 'Application/xml';
     IdHTTP.Request.ContentEncoding := 'raw';
     IdHTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)';     
     IdHTTP.Request.CustomHeaders.AddValue('Authorization', 'kkkkcccccjjj99959dijjttllt86m0');     
     Try              
        IdHTTP.Post('http://servidor.com.br', XArquivo, Response);
        reResp.Text := Response.DataString;       
     except
        on E: Exception do
        Begin           
           IdHTTP.Disconnect;
           if pos('400',E.Message) > 0 then
              ShowMessage('400 – Requisição ruim: A requisição não pôde ser interpretada pelo servidor em razão de erros de formato/sintaxe.')
           Else if pos('401',E.Message) > 0 then
              ShowMessage('401 – Não autorizado:'#13#13'A requisição requer autenticação por parte do cliente e as informações de'#13'autenticação não foram localizadas ou não são válidas.')
           Else if pos('405',E.Message) > 0 then
              ShowMessage('405 – Método não permitido:'#13'O método HTTP utilizado não é permitido para o recurso identificado na URL')
           Else if pos('422',E.Message) > 0 then
              ShowMessage('422 – Entidade não processável:'#13'O servidor reconhece que as informações estão na sintaxe correta, mas seu conteúdo está semanticamente incorreto.')
           Else if pos('11001',E.Message) > 0 then
              ShowMessage('11001 – Sem conexão com a Internet')
           Else
              ShowMessage(e.message);           
        end;
     end;
  finally
     Response.Free();
     Arquivo.Free();
  end;



Bem se não desse erro, eu supostamente, teria o retorno em TRichEdit

reResp.Text := Response.DataString;
ShowMessage(Response.DataString);


Porém existe uma erro de exceção no meu arquivo xml.
Há dias que estou pesquisando na NET e não encontro solução.


HELP
Responder

06/10/2016

Dirceu Morais

Já tentei assim:

reResp.lines.LoadFromStream( IdHTTP.Post(rgPost.Items[rgPost.ItemIndex], XArquivo, Retorno));
reResp.lines.Add( IdHTTP.Post(rgPost.Items[rgPost.ItemIndex], XArquivo, Retorno));
reResp.textlines.Add( IdHTTP.Post(rgPost.Items[rgPost.ItemIndex], XArquivo, Retorno));
reResp.Text := IdHTTP.Post(rgPost.Items[rgPost.ItemIndex], XArquivo, Retorno);
reResp.Lines.AddStrings(IdHTTP.Post(rgPost.Items[rgPost.ItemIndex], XArquivo, Retorno));


Entre outros:

;(
Responder

17/10/2016

Dirceu Morais

Obrigado a todos que empenharam em me ajudar.
Até que enfim descobri como resolver o problema.


Valeu.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar