29-03-2021, Saat: 16:58
(29-03-2021, Saat: 16:39)savasabd Adlı Kullanıcıdan Alıntı:(29-03-2021, Saat: 16:06)Mesut Adlı Kullanıcıdan Alıntı: Merhabalar
Kimlik onayı doğrulamak için Idhttp ile bir sunucuya bağlanarak göndermekte olduğum verilerin geri dönüşüyle ilgili takıldığım bir nokta var resimleri ve kodu da aşağıda paylaşacağım
takıldığım mesele şu ki status 200 döndüğü zxaman sıkıntısız birr şekilde verilerimi alıp memo1 içine response yazdırabiliyorum ama 200 değilde 400 olarak döndüğü zaman onu yakalayamıyorum ve memo içine yazdıramıyorum ve ve sistem hatayı otomatik olarak messagebox şeklinde ekrana veriyor. acaba hatalı kullanımı nerde yaptım ?
kodu aşağıda paylaşıyorum postman ile karşılaştırmalı verilerimin resimlerini de aşağıya koyuyorum
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
cxLookAndFeelPainters, cxContainer, cxEdit, dxSkinsCore, dxSkinBasic,
dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee,
dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle,
dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast,
dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky,
dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins,
dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray,
dxSkinOffice2013LightGray, dxSkinOffice2013White,
System.Net.HttpClientComponent, dxSkinOffice2016Colorful,
dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful,
dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven,
dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver,
dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
dxSkinTheBezier, dxSkinsDefaultPainters, dxSkinValentine,
dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark,
dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint,
dxSkinXmas2008Blue, Vcl.Menus, Vcl.StdCtrls, dxGDIPlusClasses, cxImage,
cxButtons, cxTextEdit, IdBaseComponent, System.JSON, IdComponent,
IdTCPConnection, DateUtils,
IdTCPClient, IdHTTP, Vcl.ComCtrls, dxCore, cxDateUtils, cxMaskEdit,
cxDropDownEdit, cxCalendar;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
cxSoyadED: TcxTextEdit;
cxAdEd: TcxTextEdit;
cxtcED: TcxTextEdit;
cxDateEdit1: TcxDateEdit;
cxImage2: TcxImage;
cxImage1: TcxImage;
IdHTTP1: TIdHTTP;
Kontrol: TcxButton;
Memo1: TMemo;
procedure KontrolClick(Sender: TObject);
private
procedure KimlikONay;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.KimlikONay();
Var
HTMLStream: TStringStream;
PostData: TStringList;
response, Error, status: string;
JSonValue: TJSonValue;
gun, ay, yil: String;
Begin
if cxDateEdit1.Text='' then
Begin
showmessage('Tarih Girin');
exit;
End;
PostData := TStringList.Create;
yil := YearOf(cxDateEdit1.Date).ToString;
ay := MonthOf(cxDateEdit1.Date).ToString;
gun := DayOf(cxDateEdit1.Date).ToString;
PostData.Add('method=verifiedTc');
PostData.Add('tc=' + cxtcED.Text);
PostData.Add('name=' + cxAdEd.Text);
PostData.Add('surname=' + cxSoyadED.Text);
PostData.Add('day=' + gun);
PostData.Add('month=' + ay);
PostData.Add('year=' + yil);
IdHTTP1.Request.CustomHeaders.Values['Authorization'] :='...........';response := IdHTTP1.Post('https:/....../..../.../index.php?SERVICE=Verified',PostData);
JSonValue := TJSONObject.ParseJSONValue(response);
status := JSonValue.GetValue<string>('status');
if (status = '200') then
Begin
Showmessage('Tc Kimlik No Onaylandı');
Showmessage(status);
Memo1.Text := response;
cxImage1.visible := True;
cxImage2.visible := False;
End;
if (status<>'200') then
Begin
Error := JSonValue.GetValue<string>('error');
Showmessage('Onaylanmadı');
Memo1.Text := response;
cxImage1.visible := False;
cxImage2.visible := True;
End;
Memo1.Text := response;
PostData.Free;
End;
procedure TForm1.KontrolClick(Sender: TObject);
begin
KimlikONay();
end;
end.
Normalde indy mesajları göstermez vcl/fmx içinde default hata yakalayıcıları var onlar gösterir, eğer hatayı siz kendiniz yakalarsanız, default yakalayıcılar(handler) çalışmaz.
Örneğin:
try //kodunuzu buraya yazınız except on E: EIdHTTPProtocolException do begin if E.ErrorCode = 400 then Memo1.Text := E.ErrorMessage end;
Teşekkür ederim ben try kullanırken exception ile ykalamaya çalışıyordum ama bu şekilde E.Errormessage içindeki 'error 'nasıl yakalayabilirim ?







