Delphi Can

Orjinalini görmek için tıklayınız: Rest server client UTF8 Problemi
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Arkadaşlar merhaba, https://m.youtube.com/watch?v=_P6waeTlhVc bu linkteki rest uygulamasını çalışırken UTF-8 kodlamasından kaynaklı verileri getirmiyor. Browserdan linki çağırdığımda sorunsuz geliyor. Sebebi ben olabilir? UTF-8 için nasıl bir ayar gerekiyor.
Örnek bir kod bloğu yada proje paylaşabilir misiniz?
(05-10-2018, Saat: 00:23)masteryoda Adlı Kullanıcıdan Alıntı: [ -> ]Örnek bir kod bloğu yada proje paylaşabilir misiniz?

Server tarafı

procedure TWebModule1.DenemeGet(Request: TWebRequest; Response: TWebResponse);
var
 a: TJSONArray;
 o: TJSONObject;
begin
qry.SQL.Text := 'select * from users;';
qry.Active := true;
 if qry.Active then begin
   if qry.RecordCount>0 then begin
     a := TJSONArray.Create;
     try
       qry.First;
       while (not qry.Eof) do begin
         o := TJSONObject.Create;
         o.AddPair('ID',TJSONNumber.Create( qry.FieldByName('ID').AsInteger ));
         o.AddPair('KULLANICIADI',qry.FieldByName('KULLANICIADI').AsString );
         o.AddPair('SIFRE',qry.FieldByName('SIFRE').AsString );
         o.AddPair('KULLANICITIPI',qry.FieldByName('KULLANICITIPI').AsString );
         a.AddElement(o);
         qry.Next;
       end;
     finally
       Response.ContentType := 'application/json';
       //Response.ContentType := 'application / x-www-form-urlencoded';
       Response.Content := a.ToString;
       a.DisposeOf;
     end;
   end;
 end;
end;

procedure TWebModule1.WebModule1accdenemeAction(Sender: TObject;
 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
 Handled := True;
 case Request.MethodType of
   mtGet: DenemeGet( Request, Response );
//    mtPut: EmployeePut( Request, Response );
//    mtPost: EmployeePost( Request, Response );
//    mtDelete:  EmployeeDelete( Request, Response );
   else begin
     Response.StatusCode := 400; // bad request error code.
     Response.SendResponse;
   end;
 end;
end;


rest client
nlZR45.png

request

vPrbqm.png


response
0z913R.png






türkçe karakter olmayan data istediğimde server tarafından bilgi sorunsuz geliyor, ancak türkçe karakterli bir data istediğimde aşağıdaki hatayı veriyor
nlZRZR.png
Merhaba,
Tools menüsü altındaki REST Debugger aracı ile test edebilir misiniz?
(05-10-2018, Saat: 11:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
Tools menüsü altındaki REST Debugger aracı ile test edebilir misiniz?

test ettim Fesih hocam gelen data içeriğinde türkçe karakter olursa hata veriyor, olmazsa sorunsuz çalışıyor
(05-10-2018, Saat: 11:31)burakb44 Adlı Kullanıcıdan Alıntı: [ -> ]
(05-10-2018, Saat: 11:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
Tools menüsü altındaki REST Debugger aracı ile test edebilir misiniz?

test ettim Fesih hocam gelen data içeriğinde türkçe karakter olursa hata veriyor, olmazsa sorunsuz çalışıyor

Merhaba,
Response kısmını aşağıdaki gibi tanımlayarak deneyebilir misiniz?
Response.ContentType := 'application/json; charset=UTF-8';
JSON metodlarında desteklenmeyen bir UTF metodunun olmasına karşın, yukarıdaki yöntemle olmaz ise, içeriği metinsel format olarak bildirerek test edin.
Response.ContentType := 'text/html; charset=UTF-8';
(05-10-2018, Saat: 11:39)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]
(05-10-2018, Saat: 11:31)burakb44 Adlı Kullanıcıdan Alıntı: [ -> ]test ettim Fesih hocam gelen data içeriğinde türkçe karakter olursa hata veriyor, olmazsa sorunsuz çalışıyor

Merhaba,
Response kısmını aşağıdaki gibi tanımlayarak deneyebilir misiniz?
Response.ContentType := 'application/json; charset=UTF-8';
JSON metodlarında desteklenmeyen bir UTF metodunun olmasına karşın, yukarıdaki yöntemle olmaz ise, içeriği metinsel format olarak bildirerek test edin.
Response.ContentType := 'text/html; charset=UTF-8';

Fesih hocam json formatında belirttiğiniz gibi denedim yine aynı hataya düştü, sadece text/html olarak metin gönderdiğimde problemsiz gedi. sorun json gönderip alma ile ilgili
RESTRequest1.Params[1].Value:=UTF8ToString(gönderilen metin)
veya
RESTRequest1.Params[1].Value:=UTF8EncodeToShortString(gönderilen metin)
şeklinde denerseniz sorun çözülüyor bende bu şekilde sorun düzeldi.
(15-11-2018, Saat: 17:10)osiso Adlı Kullanıcıdan Alıntı: [ -> ]
RESTRequest1.Params[1].Value:=UTF8ToString(gönderilen metin)
veya
RESTRequest1.Params[1].Value:=UTF8EncodeToShortString(gönderilen metin)
şeklinde denerseniz sorun çözülüyor bende bu şekilde sorun düzeldi.

Elinize sağlık benzeri bir sorunu bende yasiyordum. Hata iletisi başkaydı ama bu kodu yazinca duzeldi.
REST'ten vazgeçip datasnap ile çözdüm olayı şimdilik, projenin ilerleyişine göre REST'e dönebilirim belki.
İlginiz ve cevaplar için teşekkür ederim.
Sayfalar: 1 2