Belge Tanıtımı:Bağlantı girişi görünür.
Karşı tarafın arayüzünü curl üzerinden çağırdığımda, zaman aşımı fenomeninin çok ciddi olduğu anlaşıldı, bu yüzden karşı tarafın arayüz kişisine sordum, diğer taraf da eklemenin gerekli olduğunu söyledi:
Ekledikten sonra gerçekten iyi çalıştığını gördüm ve nasıl kullanacağımı araştırdım. POST için curl kullanılırken, "POST veri 1024 bayttan büyükse", curl doğrudan bir POST talebi başlatmaz, ancak 2 adıma ayrılır:
Expect: 100-continue
1. Sunucudan veriyi kabul etmesi için Expect:100-continue içeren bir istek gönderin
2. Sunucu tarafından geri gönderilen 100-devam cevabı alındıktan sonra, veriler Sunucuya POSTa gönderilir
Ancak bununla ilgili birkaç sorun var:
Tüm sunucular 100-devam etmesine doğru yanıt vermez, örneğin lighttpd, bu da 417 Beklenti Başarısız döndürecektir.
gecikmeye neden oluyor,İstemci ilk Expect:100-continue'u gönderdiğinde, istek gövdesini göndermeden önce sunucunun yanıtını beklemesi gerekir。
Karşı tarafın sunucusunun 1024 bayttan fazla POST isteklerini reddetmediğinden eminseniz, bu yöntemi kullanmaktan kaçınabilir ve yukarıda bahsedilen iki yan etkiyi önleyebilirsiniz; çözüm makalenin başında bahsedilen çözümdür.
Yaklaşık 100 devam ediyor
Bunun amacı şudur:
Bu sayede istemci, sunucunun talep verisini göndermeden önce almaya istekli olup olmadığını değerlendirmesini sağlar ve sunucu bunu almaya istekliyse, istemci veriyi gerçekten gönderir.
Müşteri davranışı:
100 devam gönderen bir istemci, sunucudan yanıt için sonsuza kadar beklememelidir ve bir süre zaman aşımından sonra istemci doğrudan varlığı göndermelidir.
Sunucu tarafı davranışı:
Sunucu 100 devam talebi alırsa, 100 devam ile yanıt verir veya hata kodu gönderir. Sunucu, 100 devam göndermeyen bir istemciye asla 100 devam gönderemez. Ama bazı sunucular bunu yapıyor. IIS 5 yanlışlıkla 100-devam yanıtı gönderiyor
Sunucu, 100 devam yanıtını göndermeden önce istemcinin gövdesini alırsa, bu istemcinin veri göndermeye başladığı anlamına gelir ve sunucu artık istemciye 100 devam gönderemez. .NET Expect Off Expect Setting ayar kodu şöyledir:
RestSharp şu şekilde kurulmuştur:
|