Ir para conteúdo
  • Cadastre-se

dev botao

Erro 406 usando Rest Delphi components "TRESTRequestMethod.rmPOST" para enviar XML


Ver Solução Respondido por rlind,
  • Este tópico foi criado há 1123 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia, estou com problemas de enviar o XML , o RESTResponse.StatusCode retorna sempre 406.

ao usar o HTTP POST request do REQBIN com o mesmo XML o retorno eh 200 , e com assinatura OK

Se alguem indentificar a causa do problema.

 

ReSTRequest := TRESTRequest.Create(Application);
RESTResponse  := TRESTResponse.Create(Application);
RESTClient := TRESTClient.Create(nil);

OAuth2_PMF:= TOAuth2Authenticator.Create(Application);
OAuth2_PMF.AuthorizationEndpoint := https://nfps-e.pmf.sc.gov.br/api/v1/processamento/notas/processa;
OAuth2_PMF.RedirectionEndpoint := https://nfps-e.pmf.sc.gov.br/api/v1/processamento/notas/processa;

RESTRequest.ResetToDefaults;
RESTClient.ResetToDefaults;
RESTResponse.ResetToDefaults;

OAuth2_PMF.AccessToken := pAnsichar( pToken);

   RESTRequest.Client      := RESTClient;
   RESTRequest.Response    := RESTResponse;

   RESTClient.BaseURL :=https://nfps-e.pmf.sc.gov.br/api/v1/processamento/notas/processa

   //RESTClient.Authenticator := nil;
   RESTClient.Authenticator :=  OAuth2_PMF;

   RESTRequest.Method := TRESTRequestMethod.rmPOST;

   LDocument := TXMLDocument.Create(nil);
   LDocument.LoadFromFile( pAnsichar( pArquivoXML)); { File should exist. }

   RESTRequest.Params.AddItem('Authorization', ' Bearer ' + OAuth2_PMF.AccessToken, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);
   //RESTRequest.Params.AddItem('Host', 'nfps-e.pmf.sc.gov.br', TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);
   //RESTRequest.Params.AddItem('Content-Type', 'application/xml', TREstRequestParameterKind.pkHTTPHEADER, [poDoNotEncode], TRESTContentType.ctMULTIPART_FORM_DATA);

   RESTRequest.AddBody(LDocument.XML.Text ,  ctTEXT_XML );
   RESTRequest.Accept := 'text/xml';
   showmessage('ANTES EXECUTE');
   RESTRequest.Execute;
   showmessage('depois EXECUTE');

 

Obrigado.

Rogerio Lindemayer

Postado

Com este codigo abaixo, retorno anexadoPOST_NFSE_FPOLIS_1.thumb.jpg.86b30f4952242798f6425059d83c4bf9.jpgPOST_NFSE_FPOLIS_1.thumb.jpg.86b30f4952242798f6425059d83c4bf9.jpgPOST_NFSE_FPOLIS_1.thumb.jpg.86b30f4952242798f6425059d83c4bf9.jpg

 

 Response := TStringStream.Create('');
  MyText := tStringList.Create;
  MyText.LoadFromFile(PAnsiChar(parquivoXML));

  IdHTTP1 := TIdHTTP.Create(nil);

  IdHTTP1.Request.CustomHeaders.FoldLines := False;
  IdHTTP1.Request.CustomHeaders.Add('Authorization:Bearer ' + PAnsiChar(ptoken));
  IdHTTP1.Request.CharSet := '';
  IdHTTP1.Request.ContentType := 'application/xml';
  IdHTTP1.Request.ContentEncoding := 'raw';


  try
    idHttp1.Post(sLinkEmitir, MyText, Response);
  except
    on E:EIdHTTPProtocolException do
      ShowMessage(e.ErrorMessage);
  end;

  MyText.Free;

  • 2 semanas depois ...
  • Administradores
Postado

Boa tarde,

Caso tenha encontrado a solução seria interessante compartilhar no tópico para conhecimento dos colegas.

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Solution
Postado

Bom dia, consegui usando outro  componente :

Response := TStringStream.Create('');
   HTTP_Emitir := TIdHTTP.Create(nil);
   if not DirectoryExists(PAnsiChar(pPastaRetorno)) then
      if not CreateDir(PAnsiChar(pPastaRetorno)) then
         ForceDirectories(PAnsiChar(pPastaRetorno));
   ArquivoRetorno := PAnsiChar(pPastaRetorno) + ExtractFileName(ArquivoRetorno);
   HTTP_Emitir.Request.CustomHeaders.FoldLines := False;
   HTTP_Emitir.Request.CustomHeaders.Add('Authorization: Bearer ' + PAnsiChar(pToken));
   HTTP_Emitir.Request.CharSet := '';
   HTTP_Emitir.Request.ContentType := 'application/xml';
   HTTP_Emitir.Request.ContentEncoding := 'raw';
   try
      HTTP_Emitir.Post(sLinkEmitir, PAnsiChar(pArquivoXML), Response);
   except
      on E: EIdHTTPProtocolException do begin
         iPos := Pos('<message>', E.ErrorMessage);
         if iPos > 0 then
            sMsgErro := Copy(E.ErrorMessage, iPos + 9, 200);
         sMsgErro := StringReplace(sMsgErro, '</message>', '', [rfReplaceAll]);
         sMsgErro := StringReplace(sMsgErro, '</xmlNfpse>', '', [rfReplaceAll]);
         MessageDlg('Retorno da Emissão' + #13 + #13 +
            'Código Reposta: ' + IntToStr(HTTP_Emitir.Response.ResponseCode) + #13 +
            'Erro: ' + sMsgErro, mtError, [mbOK], 0);
      end;
   end;
   iResult := HTTP_Emitir.Response.ResponseCode;
   if IntToStr(HTTP_Emitir.Response.ResponseCode) = '200' then begin
      ArquivoXML := TXMLDocument.Create(nil);
      ArquivoXML.LoadFromXML(Response.DataString);
      ArquivoXML.SaveToFile(ArquivoRetorno);
   end;


 

  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 1123 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.