Sedikit Penjelasan atau penguraian tentang procedure Request dan Response pada Indy 9 dan Indy 10. Mudahan bisa berguna bagi kalian yang ingin memakai indy 10 karena ada perbedaan coding antara indy 9 dan 10.
* Request Indy 9 (Athread.Netdata)
Spoiler:
Code:
procedure TForm1.IdMappedPortTCP1Execute(AThread: TIdMappedPortThread);
var
pilot : string;
begin
if (pos('CONNECT',Athread.NetData)<>0) then begin
pilot := 'GET http://fornesia.com/ HTTP/1.1' + #13#10 + 'Host: fornesia.com' #13#10;
procedure TForm1.IdMappedPortTCP1Execute(AContext: TIdContext);
var
Netdata, pilot : string;
begin
if (Pos('CONNECT',netstring(AContext)) <> 0) then begin
Netdata := netstring(AContext); //MEMASUKKAN NETDATA TIDBYTES KE DALAM VARIABEL NETDATA STRING
pilot := 'GET http://fornesia.com/ HTTP/1.1' + #13#10 + 'Host: fornesia.com' #13#10;
TIdMappedPortContext(AContext).NetData := netbyte(netdata); //MENGUBAH DAN MENGIRIM NETDATA STRING KE NETDATA ASLI TIDBYTES
end;
end;
* Response Indy 9 (Athread.Netdata)
Spoiler:
Code:
procedure TForm1.IdMappedPortTCP1OutboundData(AThread: TIdMappedPortThread);
begin
if POS ('403 Forbidden', AThread.NetData) <> 0 then
begin
AThread.NetData := StringReplace(AThread.NetData,'403 Forbidden','200 OK',[rfReplaceAll]);
end;
end;
* Response Indy 10 (AContext)
Spoiler:
Code:
procedure TForm1.IdMappedPortTCP1OutboundData(AContext: TIdContext);
begin
if (Pos('403 Forbidden',netstring(AContext)) <> 0) then
begin
TIdMappedPortContext(AContext).NetData := netbyte(StringReplace(netstring(AContext),'403 Forbidden','200 OK',[rfReplaceAll]));
end;
end;
function netstring(B : TidContext): string;
var
S : String;
begin
S := TIdEncoderMIME.EncodeBytes(TIdMappedPortContext(B).NetData); //Base64
S := TIdDecoderMIME.DecodeString(S); //String
Result := S;
end;
Code:
function netbyte(S : string) : TIdBytes;
var
B : TIdBytes;
begin
S := TIdEncoderMIME.EncodeString(S); //Base64
B := TIdDecoderMIME.DecodeBytes(S); //TIdBytes
Result := B;
end;
Mari kita diskusikan sama sama jika ada yang masih belum dimengerti ..
help om, kalo fungsi stringreplace gimana ya, ane coba ada error:
There is no overloaded version of 'StringReplace' that can be called with these arguments
(08-12-2015, 11:07 AM)trembesi Wrote: help om, kalo fungsi stringreplace gimana ya, ane coba ada error:
There is no overloaded version of 'StringReplace' that can be called with these arguments
(08-12-2015, 11:07 AM)trembesi Wrote: help om, kalo fungsi stringreplace gimana ya, ane coba ada error:
There is no overloaded version of 'StringReplace' that can be called with these arguments
(08-12-2015, 11:07 AM)trembesi Wrote: help om, kalo fungsi stringreplace gimana ya, ane coba ada error:
There is no overloaded version of 'StringReplace' that can be called with these arguments
tetap saja muncul: "There is no overloaded version of 'StringReplace' that can be called with these arguments"
apa ada yang kurang ato sama sekali tidak benar di coding ane om
trembesi := 'HTTP/1.0'#13#10'Host: fornesia.com' ; trembesi <<<<<<< ne mungkin mbah
maksudnya gimana om? untuk trembesi sudah ada di variable nya om
kalo memang suda di variaBEL,, MUNGKIN KAYAK GINI
TIdMappedPortContext(AContext).NetData := netbyte(StringReplace(netstring(AContext), 'HTTP/1.0', trembesi, [rfReplaceAll]);
sukses om string replace nya, itu coding nya kurang ")" dibelakang
nah kalo digabung sama payload, fungsi replace nya koq gak fungsi ya? seperti tanpa ada coding string replace
tapi kalo gak pake payload, coding stringreplace nya jalan sempurna sesuai keinginan
ad lagi yang kurang mungkin om codingan ane
Spoiler:
trembesi := 'HTTP/1.0'#13#10'Host: fornesia.com' ;
trembesi2 := 'CONNECT [Only registered and activated users can see links Click here to register] HTTP/1.1'#13#10'Host: fornesia.com/blabla'#13#10 ;
netdata := netstring(AContext);
(11-01-2014, 07:00 AM)DN13 Wrote: Pagi om.... kalo delphi7 pake indy10 bisa ga?.... cara ngehapus / ganti dari indy9 ke indy10 yang ade di delphi7 gimane?... thks all...
kayaknya cuma bisa di delphi7 ke atas deh om
Biarlah orang berkata apa, yang penting gue asyik-asyik aja :raper: