Var
PostData:TStringList;
JSonValue : TJSONObject;
response,error:string;
status:Integer;
Begin
try
PostData:=TStringList.Create;
try
PostData.Add('method=sendfactor');
PostData.Add('sendType=1');
PostData.Add('sendTo='+EMP_PHONE);
PostData.Add('sourceType=2');
PostData.Add('userId='+LOGIN_ID );
Memo1.Lines:= PostData;
IdHTTP1.Request.CustomHeaders.Values['Authorization'] :='Anahtar kod';
response := IdHTTP1.Post('URL',PostData);
JSonValue := TJSONObject.ParseJSONValue(response) as TJSONObject;
status := JSonValue.GetValue<Integer>('status');
Error := JSonValue.GetValue<String>('error');
if (status = 200) then
Begin
Data:= JSonValue.GetValue<String>('data');
Memo1.Text := response;
End;
finally
end;
except on E: EIdHTTPProtocolException do
Begin
if E.ErrorCode = 400 then
begin
response:=e.ErrorMessage;
JSonValue := TJSONObject.ParseJSONValue(response) as TJSONObject;
status := JSonValue.GetValue<Integer>('status');
Error := JSonValue.GetValue<String>('error');
Memo1.Text:=response;
if (status = 400) then
Begin
End Else
End;
End;
Showmessage(Error);
End;
end;
if E.ErrorCode = 403 then
begin
response:=E.ErrorMessage;
ShowMessage(E.message);
Memo2.Text:=response;
end;
End;
end;
Merhabalar, yukarıda da görüleceği üzere idhttp1.pos ile ilgili alana istek gönderiyorum.
Şirket ağındayken bir sıkıntı yaşamıkyorum , ama şirket ağı dışındaki tüm ağlardan istek gönderdiğim zaman response olarak HTTP/1.1 403 forbidden dönüyor hata kodu da err code :1010 . tarayıcıda dnediğimde
{"status":400,"error":"Eksik Parametreler SERVICE","data":[]} bu şekilde sorunsuz olarak geliyor ,
ama idhttpost ile gönderdiğimde bir tek şirket ağında sorunsuz çalışıyor ip ile alakalı diyicem ama tarayıcıdan gönderdiğimde problem yok o zaman ben neyi gözardı ediyor olabilirim bunun sebebi ne olabilir acaba ?
Yardımlarınız için şimdiden teşekkür ederim
Farklı ağlarda farklı sonuçlar oluyorsa ip kısıtı olabilir.
Ekstra olarak şunu verip denemenizi öneririm.
IdHttp1.HandleRedirects := True;
(16-09-2022, Saat: 16:55)narkotik Adlı Kullanıcıdan Alıntı: [ -> ]Farklı ağlarda farklı sonuçlar oluyorsa ip kısıtı olabilir.
Ekstra olarak şunu verip denemenizi öneririm.
IdHttp1.HandleRedirects := True;
Hemen deniyorum
ama farklı ağlarda taratıcılarda bir sıkıntı yaşamıyorum sadece idhttppost ile gönderirken yaşıyorum
(16-09-2022, Saat: 16:55)narkotik Adlı Kullanıcıdan Alıntı: [ -> ]Farklı ağlarda farklı sonuçlar oluyorsa ip kısıtı olabilir.
Ekstra olarak şunu verip denemenizi öneririm.
IdHttp1.HandleRedirects := True;
Malesef durum aynı değişen birşey yok.
Open Dns ile alakalı olabilir mi ?
Bu sorun ile daha önce karşılaşan olmadı mı ben ilk miyim

(19-09-2022, Saat: 11:58)Mesut Adlı Kullanıcıdan Alıntı: [ -> ]Bu sorun ile daha önce karşılaşan olmadı mı ben ilk miyim 
Merhaba,
konu idHttp ile ilgili değil gibi duruyor.
Sanırım IP kontrolü parametreleri gönderdikten sonra yapılıyor.
Bu yüzden browser ile giriş yaptığınızda sorun yaşamıyorsunuz.
Browser üzerinden anladığım kadarı ile belirli bir URL adresine GET isteğinde bulunuyorsunuz.
Aynı URL ile idHttp kullanarak Get isteği gönderin browserdan aldığınız hatayı alırsınız.
Bu tamamı ile API sistemini yazan geliştiricinin mantığında sanırım.
Normalde her istekte IP kontrolü yapılmalı ama geliştirici URI veya parametre değerlerine göre IP kontrolü yapıyor olabilir.
Yani yumurta kapıya dayanınca ip kontrolü yapıyor.
Bu bir varsayım, yüksek olasılıkla bundan kaynaklıdır.
IP izni isteyin veya API geliştiricisine başvurun.
Merhabalar ,
Sorun çözüldü sorun UserAgent Kaynaklıydı
Idhttp bileşeni user agent Mozilla/3.0 (compatible; Indy Library) olarak geçtiği için Cloudfare bunu engelliyordu Useragent Değiştirdim sorun düzeldi Cloudfare tarafından kabul edilen bir parametre olarak değiştirince düzeli teşekkürler.