Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Rest APi unescape problemi
#1
merhaba,
rest servere istek gönderirken normal olarak bazı yerlere kaçış karakteri olarak ters slashes ekliyor. örnekteki gibi;

"images": [ "https:\/\/www.siteadresi...

ancak servisi veren tarafla görüştüğüm zaman ters slashes olmadan direk oldugu gibi göndermemi söylüyorlar. yani;
"images": [ "https://www.siteadresi...
şeklinde bekliyorlar.
delphi tarafında bunu nasıl çözerim acaba
Cevapla
#2
Merhaba.


- Payload ( Body ) içerisinde zaten sizin yaptığınız şekil doğru, bu şekilde olması lazım. 
- Bence karşı tarafa göndermek için request çektiğinizde parametre yeniden ikinci bir defa Encode ediyor olmalı. Karşı tarafa nasıl gittiğiniz sordunuz mu ?

- Bu Payload (Body) bir parametre olarak Request katarına yüklenirken üçüncü parametre olarak TRESTRequestParameterOption.poDoNotEncode yazarsanız üst üste ikinci bir defa daha Encode etmesinin önüne geçersiniz.

Örnek :
 RReq        : REST.Client.TRESTRequest;

için

         RReq.AddParameter( LParam, LValue, TRESTRequestParameterKind.pkGETorPOST, [poDoNotEncode] );


EKLEME : 
* Diğer yandan RAW içerik bekliyorlarsa o zaman hiç RESTRequest işlemine girmeyin direkt TNetHTTPClient ile JSON içeriği body olarak istedikleri şekilde HTTP:// diye normal şekilde yazın ve standart bir POST işlemi yapın. Belki de bunu ifade etmek istemişlerdir.


örneğin

    LClient       := TNetHTTPClient.Create(nil);
    LParams       := TStringList.Create;
    try
      LClient.CustHeaders.Clear;
      LClient.CustomHeaders['Authorization']  := LAuthHeader;
      LClient.CustomHeaders['Content-Type']   := FContenType;
      LClient.UserAgent   := FUserAgent;

      LParams.Values['body']     := LJsonText;

      LResponse := LClient.Post( LBaseUrl + LCanonicalURI, LParams ).ContentAsString;

       ..... işlemler....

    finally
      FreeAndNil( LClient );
      LParams.Free;
    end;

Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
cevap için çok tşk ederim.
hocam hızlı bir test yapmak için isteğe body olarak eklediğim datayı jsRequest.ToString ile stringe çevirdim ve TNetHTTPClient ile post ettim ancak başarılı olmadı. yaptıgım dogru işlemmi. yoksa json datayı manuel olarak baştan oluşturmammı gerekli acaba
Cevapla
#4
JSON Data'yı string olarak bir MEMO'ya alınca Beauty Format nasıl ? Olması gerektiği gibi kurallara uygun mu ?

Ürettiğiniz JSON string'i bu linkteki Jason Beautifier and Formatter sitesine process edip VALID mi kontrol edebilirsiniz.

Rest Server BODY içeriğini hangi formatta istiyor ona göre içerik düzenlenip gönderilir. Her sunucunun yoğurt yemesi farklı olabilir. Bunu biz bilemeyiz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
siteden de dogruladım gonderdiğim json veri düzgün. sanırım site tarafında bi sorun var. karşı tarafla goruseceğim. sonucuda burdan bildiririm. çok sağolun
Cevapla
#6
Anladigim kadarıyla amazon hosting kullananlarda kaçış karakteri ters slash izin vermiyormuş. Bununla uğraşıyoruz
Cevapla
#7
reqResimArray.Add(resimUrl );
olarak arraya eklediğimde aşağıdaki gibi sonuç çıkıyor.
 
 "images": [
                   "https:\/\/www.ksiteadi...",
                   "https:\/\/www.ksiteadi..."
               ]
 
 ancak ben buradaki gibi eklemek istiyorum. süslü parantezler ile
"images": [
                   {"https:\/\/www.ksiteadi..."} ,
                   {"https:\/\/www.ksiteadi..."}
               ]
bunu nasıl yapabilirim acaba
Cevapla
#8
json array oluşturup içine başlıksız element eklemek istiyorsunuz, bunu bilerek mi yoksa denemek için mi istediniz? Pair eklenirken adı ve sonra value eklenir çünkü.

Siz denemeleriniz için bunu basit bir string içine, hiç json object kullanmadan yapın isterseniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#9
evet denemek için ekleyeceğim. string olarak ekleyince ağagıdaki gibi gonderiyor. süslü parantezler çifttırnagın içinde kalıyor. bu işlemi tRestRequest ile yapıyorum.

"images":[
"{https:\/\/www....
"{https:\/\/www....
Cevapla
#10
Bu yanlış .. süslü parantez dışarıda olur. Elle yazdınız sanırım.

* Neden su üzerine yazı yazıyor gibi hissediyorum. Kodunuzun gönderi kısmını örnek içerik ile paylaşmak istemez misiniz ? Sorunsal burada JSON yapı değil anladığım kadarıyla. Çünkü ilk mesajımda JSON gönderi validasyon için link de vermiştim. Bu düzende yazsaydınız validate etmeyecekti çünkü .
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  DLL içerisinde FireDac Problemi tecnomaster 1 180 16-03-2024, Saat: 18:05
Son Yorum: delphi.developer
  Rest Hata Yakalama m_ekici 9 1.646 08-03-2024, Saat: 19:30
Son Yorum: aegean
  türkçe karakter problemi delphiX14 4 490 27-12-2023, Saat: 10:03
Son Yorum: delphiX14
  Indy Problemi m_ekici 5 665 24-10-2023, Saat: 23:15
Son Yorum: m_ekici
  FireDac MS-SQL Türkçe karakter problemi mpirpanlar 3 820 26-07-2023, Saat: 12:30
Son Yorum: delphiman



Konuyu Okuyanlar: 1 Ziyaretçi