2008-12-01 11 views
18

मेरे कोड की तरह है निम्नलिखित:URLConnection में हेडर सेट करने का उचित तरीका क्या है?

URLConnection cnx = address.openConnection(); 
cnx.setAllowUserInteraction(false);   
cnx.setDoOutput(true); 
cnx.addRequestProperty("User-Agent", 
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
InputStream is = cnx.getInputStream(); 

यह ठीक है अगर मैं हेडर सेट इससे पहले कि मैं InputStream मिल सकता है? क्या मेरा हेडर भेजा जाएगा, या सर्वर डिफ़ॉल्ट URLConnection के उपयोगकर्ता-एजेंट (यदि कोई हो) देखेंगे? यदि कनेक्शन पहले से खुला है एक IllegalStateException फेंक दिया जाएगा -

उत्तर

20

हेडर InputStream हो रही किसी भी को प्रभावित करने के लिए करने से पहले स्थापित होना चाहिये।

जहां तक ​​User-Agent हेडर विशेष रूप से है, इसे सेट किया जाना चाहिए, तो इसे भेजा जाना चाहिए।

URLConnection जावाडोक देखें।

+1

यह लिंक टूटा हुआ है। – Fabii

4

प्रश्न का उत्तर देने के लिए, कोड सही है। पल getInputStream() प्राप्त करें, एक HTTP प्राप्त लक्ष्य सर्वर पर भेजा जाता है।

उपयोगकर्ता-एजेंट पर अतिरिक्त नोट के, आप इसे सेट नहीं है, URLConnection डिफ़ॉल्ट वैसे भी, जो भेज देंगे:

User-Agent: Java/1.6.0_24 (varies depending on your java version) 
-2

मैं निम्न स्तर के निर्माणों में इस तरह के उपयोग करने के खिलाफ सलाह देंगे यूआरएल कनेक्शन के रूप में। HTTP अनुरोध भेजने के लिए बहुत सारे पुस्तकालय हैं, जिनमें सबसे प्रमुख अपाचे HTTP क्लाइंट है।

+0

(टिप्पणी होना चाहिए, प्रश्न का उत्तर नहीं देता) – BadZen

+0

अपाचे HTTP क्लाइंट एंड्रॉइड फ्रेमवर्क में निराश और बहिष्कृत है। Google HttpURLConnection के उपयोग को प्रोत्साहित करता है। – afollestad