Merhaba @
SimaWB
- Ben şu sıralar başlığa cevap yazmak üzereyken de aynı yerde gördüm ancak dosyaları araştırdığımda yer almadığını gördüm.
@
masteryoda
- ( Community Edition ) Delphi RIO 10.3 yüklü Dosya yolu ve adı
c:\Program Files (x86)\Embarcadero\Studio\20.0\source\soap\Soap.SOAPHTTPTrans.pas
İçinde bahsettiğiniz property maalesef mevcut değil ...
- Eski yeni bir karşılaştırma yaptım. Property listesinde geçen
ProxyByPass için kullanıldığı yer ESKİDEN aşağıdaki şekilde bir CONNECT procedure içinde yer alıyormuş. Bu yenisinde
Connect'e de yer verilmemiş.
- Ancak burada ( eski versiyondaki halinde ) şuna dikkat ettim.
IFNDEF USE INDY direktifi...
{$IFNDEF USE_INDY}
procedure THTTPReqResp.Connect(Value: Boolean);
var
AccessType: Integer;
begin
if Value then
begin
{ Yes, but what if we're connected to a different Host/Port?? }
{ So take advantage of a cached handle, we'll assume that
Connect(False) will be called explicitly when we're switching
Host. To that end, SetURL always disconnects }
if (FConnected) then
Exit;
{ Proxy?? }
if Length(FProxy) > 0 then
AccessType := INTERNET_OPEN_TYPE_PROXY
else
AccessType := INTERNET_OPEN_TYPE_PRECONFIG;
{ Also, could switch to new API introduced in IE4/Preview2}
if InternetAttemptConnect(0) <> ERROR_SUCCESS then
SysUtils.Abort;
FInetRoot := InternetOpen(PChar(FAgent), AccessType, PChar(FProxy), PChar(FProxyByPass), 0);
Check(not Assigned(FInetRoot));
try
FInetConnect := InternetConnect(FInetRoot, PChar(FURLHost), FURLPort, PChar(FUserName),
PChar(FPassword), INTERNET_SERVICE_HTTP, 0, Cardinal(Self));
Check(not Assigned(FInetConnect));
FConnected := True;
except
on E: Exception do
begin
InternetCloseHandle(FInetRoot);
FInetRoot := nil;
raise ESOAPHTTPException.Create(E.Message);
end;
end;
end
else
begin
if Assigned(FInetConnect) then
InternetCloseHandle(FInetConnect);
FInetConnect := nil;
if Assigned(FInetRoot) then
InternetCloseHandle(FInetRoot);
FInetRoot := nil;
FConnected := False;
end;
end;
Ben de yeni versiyonda INDY yakasında alternatif var mı diye araştırdım şuna ulaştım.
Bunu başka bir unit altında yer verilmiş
c:\Program Files (x86)\Embarcadero\Studio\20.0\source\data\dsnap\Datasnap.Win.SConnect.pas
burada
TWebConnection altında
ProxyByPass yer alıyor.
TWebConnection = class(TStreamedConnection, ITransport)
private
FAgent: string;
FUserName: string;
FPassword: string;
FURL: string;
FURLHost: string;
FURLSite: string;
FURLPort: Integer;
FURLScheme: Integer;
FProxy: string;
FProxyByPass: string;
FInetRoot: HINTERNET;
FInetConnect: HINTERNET;
FInterpreter: TCustomDataBlockInterpreter;
procedure Check(Error: Boolean);
function IsURLStored: Boolean;
procedure SetURL(const Value: string);
protected
{ ITransport }
function GetInterpreter: TCustomDataBlockInterpreter; override;
function GetWaitEvent: THandle; stdcall;
function Transport_GetConnected: Boolean; stdcall;
function ITransport.GetConnected = Transport_GetConnected;
procedure Transport_SetConnected(Value: Boolean); stdcall;
procedure ITransport.SetConnected = Transport_SetConnected;
function Receive(WaitForInput: Boolean; Context: NativeInt): IDataBlock; stdcall;
function Send(const Data: IDataBlock): NativeInt; stdcall;
procedure SetConnected(Value: Boolean); override;
protected
function CreateTransport: ITransport; override;
procedure DoConnect; override;
[Default(False)]
property SupportCallbacks default False;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Agent: string read FAgent write FAgent;
property UserName: string read FUserName write FUserName;
property Password: string read FPassword write FPassword;
[Stored('IsURLStored')]
property URL: string read FURL write SetURL stored IsURLStored;
property Proxy: string read FProxy write FProxy;
property ProxyByPass: string read FProxyByPass write FProxyByPass;
property ObjectBroker;
end;
Buradaki PROCEDURE
Transport_SetConnected olarak yer alıyor.
procedure TWebConnection.Transport_SetConnected(Value: Boolean);
var
AccessType: Integer;
begin
if Value and not GetConnected then
begin
if Length(FProxy) > 0 then
AccessType := INTERNET_OPEN_TYPE_PROXY else
AccessType := INTERNET_OPEN_TYPE_PRECONFIG;
FInetRoot := InternetOpen(PChar(Agent), AccessType, PChar(FProxy), PChar(FProxyByPass), 0);
if InternetAttemptConnect(0) <> ERROR_SUCCESS then System.SysUtils.Abort;
Check(not Assigned(FInetRoot));
try
FInetConnect := InternetConnect(FInetRoot, PChar(FURLHost), FURLPort, PChar(FUserName),
PChar(FPassword), INTERNET_SERVICE_HTTP, 0, DWORD_PTR(Self));
Check(not Assigned(FInetConnect));
except
InternetCloseHandle(FInetRoot);
end;
end else
if not Value then
begin
if Assigned(FInetConnect) then
InternetCloseHandle(FInetConnect);
FInetConnect := nil;
if Assigned(FInetRoot) then
InternetCloseHandle(FInetRoot);
FInetRoot := nil;
end;
end;
(04-12-2018, Saat: 16:42)masteryoda Adlı Kullanıcıdan Alıntı: Merhaba, 10.3 rio kullanan arkadaşlar SOAPHTTPTrans.pas içerisinde property ProxyByPass kodu varmı bakabilirmi? 10.2.3 sürümünde var ama 10.3 de kaldırılmış görünüyor
10.3 de bu SOAPHTTPTrans.pas 651 satır 10.2.3 de 1603 satır görünüyor