Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Http post
#1
Arkadaşlar merhaba Rest servise post işlemi yaparken hata alıyorum "HTTP/1.1 500" hatası alıyorum. Aynı post işlemi başka bir platformdan geldiğinde HTTP/1.1 ben post ettiğimde HTTP/1.0 olarak geliyor. Nerde yanlış yapıyor olabilirim ?

Delphi kodum

     RBody := TStringstream.Create(sorgu);
     IdHTTP.Request.Accept := 'application/json';
    IdHTTP.Request.ContentType := 'application/json';
    IdHTTP.Request.ContentLength:=Length( UTF8Encode(sorgu));
    IdHTTP.Request.Host:=sunucu+':'+port;
    IdHTTP.Request.CustomHeaders.Add('Authorization: Bearer  '+accestoken);
    IdHTTP.Request.CustomHeaders.Add('Expect: 100-continue');
    IdHTTp.ProtocolVersion:=pv1_1;
    jstr :=IdHTTP.Request.ToString;
    jstr := IdHTTP.post('http://'+sunucu+':'+port+'/api/v1/quickProductionSlips' ,RBody);
    memo1.Text:=jstr;
    RBody.Free;
    IdHTTP.Free;


Post işlemi olması gereken


b6M1L0.png 
Ben post ettiğimde

dBZr7r.png
Cevapla
#2
Selamlar,

Embarcadero'nun forumlarında aynı sorunu yaşayan bir thread buldum, oradan alıntı yapıyorum. Ancak söyledikleri şey SOAP UUI'dan aldığınız HTTP Header bilgisini aynen kendi IdHTTP'nize kopyalayarak göndermeniz olacaktır.

https://forums.embarcadero.com/thread.js...&tstart=-3

Kolay Gelsin
Cevapla
#3
(25-06-2018, Saat: 08:19)hassur Adlı Kullanıcıdan Alıntı: Arkadaşlar merhaba Rest servise post işlemi yaparken hata alıyorum "HTTP/1.1 500" hatası alıyorum. Aynı post işlemi başka bir platformdan geldiğinde HTTP/1.1 ben post ettiğimde HTTP/1.0 olarak geliyor. Nerde yanlış yapıyor olabilirim ?

Delphi kodum

     RBody := TStringstream.Create(sorgu);
     IdHTTP.Request.Accept := 'application/json';
    IdHTTP.Request.ContentType := 'application/json';
    IdHTTP.Request.ContentLength:=Length( UTF8Encode(sorgu));
    IdHTTP.Request.Host:=sunucu+':'+port;
    IdHTTP.Request.CustomHeaders.Add('Authorization: Bearer  '+accestoken);
    IdHTTP.Request.CustomHeaders.Add('Expect: 100-continue');
    IdHTTp.ProtocolVersion:=pv1_1;
    jstr :=IdHTTP.Request.ToString;
    jstr := IdHTTP.post('http://'+sunucu+':'+port+'/api/v1/quickProductionSlips' ,RBody);
    memo1.Text:=jstr;
    RBody.Free;
    IdHTTP.Free;


Post işlemi olması gereken


b6M1L0.png 
Ben post ettiğimde

dBZr7r.png

Yanlış hatırlamıyorsam IdHttp, POST işleminde varsayılan olarak HTTP 1.0 kullanıyor. Maalesef ProtocolVersion'u pv1_1 yapsanız da bu değişmiyor Sad

Şunu ekleyip deneyebilir misiniz:
IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions + [hoKeepOrigProtocol];
There's no place like 127.0.0.1
WWW
Cevapla
#4
Merhaba,
Header kısmını karşılaştırdığınız gibi Post Data kısmınıda karşılaştırmanızı tavsiye ederim. Gönderdiğiniz veriyide karşılaştırın.
Ayrıca DLL kullanmanız gerekebilir.

b6M1L0.png
Cevapla
#5
Hata post ettiğim data daki Türkçe karakterler ile ilgiliymiş. 
RBody := TStringstream.Create(UTF8Encode(sorgu));
   şeklinde gönderince düzeldi. Diğer önerileride Http/1.1 versiyon için deneyeceğim. HTTP/1.0 ile HTTP/1.1 fark nedir ?
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  IdHttp post tuhaf bir istisna TuncayDelphi 9 1.303 23-03-2023, Saat: 00:32
Son Yorum: TuncayDelphi
  Rest Servis Body Param Json Post bydelphi 2 917 05-12-2022, Saat: 17:05
Son Yorum: bydelphi
  Rest Debugger ile POST işlemi 41linea41 0 444 18-10-2022, Saat: 20:25
Son Yorum: 41linea41
Photo REST API Post ile Token Alma ahmet6513 4 1.416 27-09-2022, Saat: 15:53
Son Yorum: ahmet6513
  HTTP/1.1 403 forbidden Yetkilendirme Hatası - [Çözüldü] Mesut 6 1.735 20-09-2022, Saat: 10:47
Son Yorum: Mesut



Konuyu Okuyanlar: 1 Ziyaretçi