2012-08-16 16 views
6

के बाद मैं, निम्नलिखित कोड का उपयोग कर कोर जावा का उपयोग करने के लिए एक InputStream से HTTP अनुरोध डेटा पढ़ने की कोशिश कर रहा हूँ लटकी हुई है:पढ़ना अनुरोध सामग्री, हमेशा शीर्ष लेख

BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
      String inputLine; 
      while ((inputLine = in.readLine()) != null) 
       System.out.println(inputLine); 
      in.close(); 

मैं हैडर ठीक प्राप्त करते हैं, लेकिन तो क्लाइंट हमेशा के लिए लटका रहता है क्योंकि सर्वर को अनुरोध के "ईओएफ" कभी नहीं मिलता है। इससे मैं कैसे निपटूं? मैंने देखा है कि इस सवाल ने काफी कुछ पूछा है, और अधिकांश समाधानों में उपरोक्त की तरह कुछ शामिल है, हालांकि यह मेरे लिए काम नहीं कर रहा है। मैं दोनों कर्ल और ग्राहक के रूप में एक वेब ब्राउज़र का उपयोग की कोशिश की है, बस एक बात का अनुरोध भेजकर किसी भी विचार

+1

जहाँ आपके कोड व्यतीत कर रहा है? 'रीडलाइन() 'वापस नहीं आ रहा है? –

+0

हां यह सिर्फ readLine() पर फंस रहा है जब मैं इसे डीबगर में चलाता हूं – Hoofamon

उत्तर

10

एक HTTP अनुरोध एक रिक्त पंक्ति (वैकल्पिक ऐसे प्रपत्र डेटा के रूप में अनुरोध डेटा के बाद साथ समाप्त होता है के लिए

धन्यवाद या एक फ़ाइल अपलोड), एक ईओएफ नहीं।

BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
String inputLine; 
while (!(inputLine = in.readLine()).equals("")) 
    System.out.println(inputLine); 
in.close(); 
+0

सही काम करता है, धन्यवाद !!! – Hoofamon

+0

पूरे दिन इस समाधान के लिए देख रहे थे। एक आकर्षण की तरह काम करता है – sunrize920

+0

बहुत बढ़िया, धन्यवाद! – tokudu

3

ऊपर (के रूप में मैं अभी तक टिप्पणी पोस्ट करने में सक्षम नहीं हूँ) जवाब के अलावा, मैं जोड़ने के लिए ओपेरा जैसे कुछ ब्राउज़रों (मुझे लगता है कि यह क्या किया था चाहते हैं: आप कुछ इस तरह चाहते हैं , या यह मेरा एसएसएल सेटअप था, मुझे नहीं पता) एक ईओएफ भेजें। यहां तक ​​कि यदि मामला नहीं है, तो आप NullPointerException की वजह से अपने सर्वर को क्रैश न होने के लिए इसे रोकना चाहेंगे।

कि बचने के लिए, बस अपनी हालत के लिए अशक्त परीक्षण जोड़ने के लिए, इस तरह:

while ((inputLine = in.readLine()) != null && !inputLine.equals("")); 
संबंधित मुद्दे