Ir para conteúdo
  • Cadastre-se

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


Ver Solução Respondido por rlind,
  • Este tópico foi criado há 1684 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 ...
  • Consultores
Postado

Boa tarde,

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

At.

Consultora ACBr Pro

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;


 

  • Curtir 1
  • Consultores
Postado

Obrigado por reportar.

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

Consultora ACBr Pro

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á 1684 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...