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;