Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá, sou novo no grupo e estou migrando projeto NFe_Util (c#) para ACBrNFe.

 

Estamos com problemas em relação aos clientes que utilizam proxy (praticamente todos) pois anteriormente, ainda que o IE estivesse configurado para proxy, nosso sistema ignorava o proxy e utilizava o WebProxy.GetDefaultProxy e NetworkCredential. Com isto, o sistema estabelecia conexão com os webservices da Sefaz mas o usuário não tinha permissão de navegar na internet pelo browser.

 

Mas com ACBr os clientes precisam configurar as propriedades de proxy (host,port,user,passw), caso contrário dá erro Proxy 407 (não autenticado). Entretanto, uma vez que a conexão é estabelecida (Ex: ConsultarStatus) o usuário passa a ter acesso à internet e pode navegar de boa.

 

Minha dúvida:

1) Este é o comportamento comum de conexão com proxy para HttpReqResp? Ou estou fazendo algo errado?

2) Sendo este o comportamento, teria como fazer o logoff nesta autenticação do IE para novamente bloquear à internet?

 

Obrigado,

Postado

Resolvi o problema no cliente,,mas tive que modificar o codigo da ACBr, implementando o ByPass = '*gov,br*'.

 

Creio que seria interessante deixar esta propriedade ByPass nas configurações do WebServices. Utilizando este recursos de ByPass nem foi preciso informar usuário/senha do proxy e eu também fiz uma função que captura as configurações de proxy do IE automaticamente.

 

Estou de saída agora (final do primeiro expediente), mas amanhã disponibilizo todos os códigos por aqui.

 

Obrigado a todos,

  • Curtir 1
Postado
Bom dia a todos, vamos lá:
 
1) Alteração da unit ACBrNFeWebServices.pas - Capicom.dll
{$ELSE}
procedure TWebServicesBase.ConfiguraReqResp( ReqResp : THTTPReqResp);
begin
  if FConfiguracoes.WebServices.ProxyHost <> '' then
   begin
     ReqResp.Proxy        := FConfiguracoes.WebServices.ProxyHost+':'+FConfiguracoes.WebServices.ProxyPort;
     ReqResp.UserName     := FConfiguracoes.WebServices.ProxyUser;
     ReqResp.Password     := FConfiguracoes.WebServices.ProxyPass;
     ReqResp.ProxyByPass  := '*gov.br*';
   end;
  ReqResp.OnBeforePost := OnBeforePost;
end;
 
 
2) Detectar se o IE utiliza proxy
uses Registry, Types, StrUtils;
function GetIEProxy(out AHost, APort: String): Boolean;
var
  I: Integer;
  sList, sProxies: TStringDynArray;
  sProxyServer: String;
  bProxyEnable: Boolean;
begin
  Result := False;
  AHost := '';
  APort := '';
  with TRegistry.Create do
  begin
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKeyReadOnly('\Software\Microsoft\Windows\CurrentVersion\Internet Settings') then
      begin
        if ValueExists('ProxyServer') then
          sProxyServer := ReadString('ProxyServer');
        if ValueExists('ProxyEnable') then
          bProxyEnable := ReadBool('ProxyEnable');
        if bProxyEnable and (sProxyServer<>'') then
        begin
          //-- Identificar proxy
          if ContainsStr(sProxyServer, '=') then
          begin
            sList := SplitString(sProxyServer, ';');
            sProxyServer := '';
            for I := 0 to Length(sList)-1 do
            begin
              if ContainsStr(sList, 'https=') then
                sProxyServer := StringReplace(sList, 'https=', '', []);
            end;
          end;
          //--
          if (sProxyServer<>'') then
          begin
            sProxies := SplitString(sProxyServer, ':');
            AHost := sProxies[0];
            APort := sProxies[1];
          end;
          //--
          Result := (AHost<>'');
        end;
        CloseKey;
      end
      else
        Result := False;
     finally
      Free;
    end;
  end;
end;
 
 
3) Configurar componente
procedure ConfigACBrNFe;
var
  sHost, sPort: String;
begin
 
  //-- Verificar se está configurado para proxy
  if (GetIEProxy(sHost, sPort) and (edtProxyHost.Text='')) then
  begin
  end
    ..Configuracoes.WebServices.ProxyHost := sHost;
    ..Configuracoes.WebServices.ProxyPort := sPort;
    ..Configuracoes.WebServices.ProxyUser := '';
    ..Configuracoes.WebServices.ProxyPass := '';
  else
  begin
    ..Configuracoes.WebServices.ProxyHost := edtProxyHost.Text;
    ..Configuracoes.WebServices.ProxyPort := edtProxyPort.Text;
    ..Configuracoes.WebServices.ProxyUser := edtProxyUser.Text;
    ..Configuracoes.WebServices.ProxyPass := edtProxyPass.Text;
  end;
 
end;
  • Curtir 1
  • Este tópico foi criado há 3557 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.