2012-06-13 22 views
8

virgüllerine sahiptir Delphi XE2 ve Indy 10.5.8.0 kullanıyorum. TIdHttp örneğim var ve istek için özel bir başlık eklemem gerekiyor. Üstbilgi değeri içinde virgül vardır, böylece otomatik olarak birden çok üstbilgiye ayrıştırılır. Bunu yapmak istemiyorum. Özel başlığımın hala bir dize olması ve virgülle ayırıcıya göre bölünmemesi için başlık değerine ihtiyacım var.TIdHttp isteğine özel üstbilgi ekleme, üstbilgi değeri

IdHttp1.Request.CustomHeaders.Delimiter := ';''u başarılı bir şekilde ayarlamayı denedim. Başlığın ayrılmadığından emin olmanın bir yolu var mı?

procedure SendRequest; 
const HeaderStr = 'URL-Encoded-API-Key VQ0_RV,ntmcOg/G3oA==,2012-06-13 16:25:19'; 
begin 
    IdHttp1.Request.CustomHeaders.AddValue('Authorization', HeaderStr); 
    IdHttp1.Get(URL); 
end; 
+0

IIRC Şunları yapabilirsiniz: IdHttp1.Request.CustomHeaders.Value ['Yetkilendirme']: = HeaderStr; ve tüm "özel başlıklar" için SSL'yi unutmayın! – ComputerSaysNo

+0

"AddValue()" veya "Value []" işlevini kullanıp kullanmayacağınız, dize sonunda "TIdHeaderList.FoldAndInsert()" ifadesinde sona erer; bu, dizenin ayrıştırıldığı, parçalara ayrıldığı ve listeye eklendiği yerdir. –

cevap

4

Bu sorunu en son Indy 10.5.8 SVN anlık görüntüsünü kullanarak oluşturamıyorum. Gösterdiğiniz dize, benim için tek bir satır olarak atanır.

Bu, varsayılan olarak TIdHeaderList.FoldLines özelliğinin true olarak ayarlandığını ve satırların boşluk ve virgül karakterler üzerinde katlanacağını, böylece dizenin neden dağıldığını açıklayacağını söyledi. Anlayabildiğim kadarıyla, Indy sürümünüz ile SVN'deki en son sürüm arasındaki katlama algoritmasında herhangi bir mantıksal değişiklik yapılmadı.

+0

FoldLines öğesini False olarak ayarlamak hile yaptı. Indy belgelerinde Delphi, FoldLength'un başlık değerinin sarılmaya zorladığı (boşluk ya da virgül değil) olduğunu ve bu yüzden katlamadan rahatsız olmadığımı söylüyor. Belgesiz bir hile, teşekkürler Remy! –

+0

"TIdHeaderList.FoldLength" özelliğinin varsayılan değeri 78'dir. Eklediğiniz son üstbilginin uzunluğu 75'tir, bu nedenle 'TIdHeaderList.FoldLines' özelliği true olarak ayarlanmış olsa bile, birden çok satıra katlanmamalıdır. 'TIdHeaderList.FoldLength' özelliğini 74 veya daha azına kısaldığımda, hattınızın beklendiği gibi katlanmasını görüyorum. Bu durumda, 'FoldLength' değerini, 75'ten daha yüksek bir değere (zaten değilse) veya farklı bir şekilde katlamayı devre dışı bırakmak için "MaxInt" e değiştirebilirdiniz. –

+0

Bir çizgi katlandığında, çizginin 'FoldLength' konumuna en yakın olan boşluk/virgül karakterinde katlanır. –

İlgili konular