यदि मैं HTTP java.net.URL
बना देता हूं और फिर openConnection()
पर कॉल करता हूं, तो क्या यह आवश्यक रूप से इंगित करता है कि एक HTTP पोस्ट होने जा रहा है? मुझे पता है कि openStream()
एक जीईटी का तात्पर्य है। यदि हां, तो आप कच्चे सॉकेट परत के साथ काम किए बिना किसी अन्य HTTP क्रियाओं में से एक कैसे करते हैं?क्या नया यूआरएल (...)। OpenConnection() जरूरी है कि एक पोस्ट का मतलब है?
उत्तर
यदि आप openConnection()
का उपयोग कर URLConnection
ऑब्जेक्ट पुनर्प्राप्त करते हैं तो यह वास्तव में सर्वर से संचार शुरू नहीं करता है। ऐसा तब तक नहीं होता जब तक आपको URLConnection()
से स्ट्रीम प्राप्त न हो जाए। जब आप पहली बार कनेक्शन प्राप्त करते हैं तो आप इसे खोलने से पहले हेडर और अन्य कनेक्शन गुण जोड़/बदल सकते हैं।
URLConnection का जीवन चक्र थोड़ा अजीब है। जब तक आप स्ट्रीम में से एक प्राप्त नहीं कर लेते हैं, तब तक यह हेडर को सर्वर पर नहीं भेजता है। अगर आपको इनपुट स्ट्रीम मिलती है तो मुझे लगता है कि यह एक प्राप्त करता है, हेडर भेजता है, फिर आपको आउटपुट पढ़ने देता है। अगर आपको आउटपुट स्ट्रीम मिलती है तो मुझे लगता है कि यह इसे एक पोस्ट के रूप में भेजता है, क्योंकि ऐसा लगता है कि आप इसे डेटा लिखेंगे (आउटपुट स्ट्रीम के लिए आपको setDoOutput(true)
पर कॉल करने की आवश्यकता हो सकती है)। जैसे ही आप इनपुट स्ट्रीम प्राप्त करते हैं, आउटपुट स्ट्रीम बंद होती है और यह सर्वर से प्रतिक्रिया के लिए प्रतीक्षा करती है।
उदाहरण के लिए, यह एक पोस्ट करना चाहिए:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream os = conn.getOutputStream();
os.write("Hi there!");
os.close();
InputStream is = conn.getInputStream();
// read stuff here
यह एक मिलता है जबकि:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);
InputStream is = conn.getInputStream();
// read stuff here
URLConnection
भी अन्य अजीब बातें करते होंगे। यदि सर्वर सामग्री की लंबाई निर्दिष्ट करता है तो URLConnection
अंतर्निहित इनपुट स्ट्रीम तब तक खुला रहेगा जब तक कि वह उस डेटा को प्राप्त न करे, भले ही आप इसे स्पष्ट रूप से बंद कर दें। इसने हमारे लिए बहुत सी समस्याएं पैदा की क्योंकि इसने हमारे क्लाइंट को थोड़ा मुश्किल से बंद कर दिया, क्योंकि URLConnection
नेटवर्क कनेक्शन खुला रखेगा। यह शायद संभवतया मौजूद है भले ही आप getStream()
का उपयोग करें।
नहीं, ऐसा नहीं है। लेकिन यदि यूआरएल का प्रोटोकॉल HTTP है, तो आपको रिटर्न ऑब्जेक्ट के रूप में HttpURLConnection
मिल जाएगा। इस वर्ग में setRequestMethod
विधि निर्दिष्ट करने के लिए है कि आप किस HTTP विधि का उपयोग करना चाहते हैं।
यदि आप अधिक परिष्कृत सामग्री करना चाहते हैं तो आप Jakarta HttpClient जैसी लाइब्रेरी का उपयोग करके शायद बेहतर हो सकते हैं।
- 1. नया() मतलब क्या है?
- 2. यूआरएल में/#!/मतलब क्या है?
- 3. सी ++ में "(शून्य) नया" क्या मतलब है?
- 4. जावास्क्रिप्ट में 'नया' मतलब क्या है?
- 5. एक Django "ऐप" का मतलब क्या है?
- 6. नया कैसे है() बताएं कि क्या सत्र एक नया है या पहले से उपयोग में है?
- 7. FILL_AND_STROKE का क्या मतलब है?
- 8. Django: एक साथ जरूरी है?
- 9. एनएसईआरआर कोड: यूआरएल लोड हो रहा है सिस्टम त्रुटियों का मतलब है कि नेटवर्क का नुकसान
- 10. आवश्यकता का मतलब क्या है?
- 11. os.error का क्या मतलब है?
- 12. एक्सपीएस का क्या मतलब है?
- 13. MethodImplOptions.InternalCall का क्या मतलब है?
- 14. क्या() => {} का मतलब है?
- 15. संयोजन का मतलब क्या है?
- 16. दस्तावेज़ का क्या मतलब है?
- 17. @plt का मतलब क्या है?
- 18. 'अल्फकी' का क्या मतलब है?
- 19. iter_swap का क्या मतलब है?
- 20. बाजार में टैग का क्या मतलब है?
- 21. मेट्रो स्टाइल ऐप्स: WinJS एक जरूरी है?
- 22. सी ++, क्या यह गोटो स्टेटमेंट जरूरी है?
- 23. क्या डाटाबेस सामान्यीकरण अभी भी जरूरी है?
- 24. उम्मीदवार कुंजी का क्या मतलब है?
- 25. क्या वैध सीएसएस होना जरूरी है?
- 26. जांचें कि कोई स्ट्रिंग एक यूआरएल है
- 27. अपरिवर्तनीय मतलब क्या है?
- 28. "|" क्या करता है एक टर्मिनल कमांड लाइन में मतलब है?
- 29. जावास्क्रिप्ट:/* @ @ */मतलब क्या है?
- 30. निर्धारक मतलब क्या है?