2013-06-20 4 views
6

मैं क्लाइंट को मेरी प्रतिक्रिया में बड़ी मात्रा में डेटा भेज रहा हूं, जो खंडित स्थानांतरण एन्कोडिंग प्रारूप में है।प्रतिक्रिया चंकित स्थानांतरण एन्कोडिंग में भेजी गई है और कुछ डेटा पहले ही भेज दिए जाने के बाद त्रुटियों को इंगित कर रहा है

प्रतिक्रिया के दौरान मिडवे किसी भी त्रुटि से मुझे कैसे निपटना चाहिए?

मैं जानना चाहता हूं कि क्लाइंट के लिए कोई HTTP स्पेक अनुशंसित अभ्यास है या नहीं, यह जानने के लिए कि वास्तव में प्रतिक्रिया सफल नहीं है लेकिन सर्वर कुछ समस्या में भाग गया है।

उत्तर

5

एक बार जब आप क्लाइंट को HTTP शीर्षलेख भेजना शुरू कर देते हैं, तो आप कुछ और नहीं भेज सकते हैं। आपको उस प्रतिक्रिया को भेजना होगा जिसे आप भेजना चाहते हैं, यानी खंडित डेटा और संबंधित शीर्षलेख। यदि कोई त्रुटि उस माध्यम से मिडवे होती है, तो क्लाइंट को उस त्रुटि की रिपोर्ट करने का कोई तरीका नहीं है। आप बस कनेक्शन बंद कर सकते हैं। या तो ग्राहक को सभी शीर्षलेख प्राप्त नहीं होते हैं, या प्रतिक्रिया के अंत में 0-लंबाई का समापन समाप्त नहीं होता है। ग्राहक के लिए यह जानने के लिए किसी भी तरह से पर्याप्त है कि सर्वर भेजने के दौरान त्रुटि आई।

+0

धन्यवाद रेमी। हाँ ... ठीक है, मुझे पता है कि शीर्षलेख पहले भेजे जाते हैं और स्ट्रीम में लिखना शुरू करने के बाद उन्हें संशोधित करने का कोई तरीका नहीं है। जैसा कि आपने सुझाव दिया था, मैं वर्तमान में कनेक्शन बंद कर देता हूं, लेकिन यह जानना चाहता था कि HTTP स्पेक कहता है कि क्लाइंट को इसके बारे में कैसे पता चल सकता है। 0-लंबाई का हिस्सा दिलचस्प है, मैं यह देखने के लिए जांच करूंगा कि क्या मैं उस क्षेत्र में कुछ कर सकता हूं। –

+0

केवल दो तरीके हैं जो आप क्लाइंट को यह बताने में सक्षम होंगे कि कुछ गलत हो गया है। कनेक्शन को बंद करें (जो आपको करना चाहिए) क्योंकि अंतिम 0-लंबाई खंड प्राप्त करने के अलावा कुछ भी एक त्रुटि है, या फिर अंतिम 0-दसवीं हिस्सा भेजने के बाद चंकित पाद लेख में एक कस्टम HTTP शीर्षलेख डालें। अधिकांश क्लाइंट इस तरह के हेडर को अनदेखा कर सकते हैं, लेकिन यदि आप अपना खुद का क्लाइंट लिख रहे हैं तो आप उस हेडर को देख सकते हैं। –

+0

ज़रूर..धन्यवाद! रेमी ... –

संबंधित मुद्दे