2009-09-21 14 views
8

के साथ बंद कर दिया गया है मैं कुकीज़ के लिए आवश्यक वेबपृष्ठ के लिए अनुरोध करने का प्रयास कर रहा हूं। मैं HTTPUrlConnection उपयोग कर रहा हूँ, लेकिन प्रतिक्रिया हमेशा वापसकुकीज जावा यूआरएल कनेक्शन

<div class="body"><p>Your browser's cookie functionality is turned off. Please turn it on. 

मैं कैसे अनुरोध इस तरह के कर सकते हैं पूछे सर्वर सोचता है कि मैं कुकी चालू कर रखी कह आता है। मेरा कोड इस तरह कुछ चला जाता है।

private String readPage(String page) throws MalformedURLException { 
    try { 
     URL url = new URL(page); 
     HttpURLConnection uc = (HttpURLConnection) url.openConnection(); 
     uc.connect(); 

     InputStream in = uc.getInputStream(); 
     int v; 
     while((v = in.read()) != -1){ 
      sb.append((char)v); 
     } 
     in.close(); 
     uc.disconnect(); 
    } catch (IOException e){ 
     e.printStackTrace(); 
    } 
    return sb.toString(); 
} 

उत्तर

10

आप सिस्टम यह कुकी संभाल के लिए करने के लिए एक CookieHandler जोड़ने की जरूरत है। जावा 6 से पहले, जेआरई में कोई कुकी हैडलर कार्यान्वयन नहीं है, आपको अपना खुद का लिखना होगा। यदि आप जावा 6 पर हैं, तो आप यह कर सकते हैं,

CookieHandler.setDefault(new CookieManager()); 

URLConnection की कुकी हैंडलिंग वास्तव में कमजोर है। यह मुश्किल से काम करता है। यह सभी कुकी नियमों को सही तरीके से संभाल नहीं करता है। यदि आप प्रमाणीकरण जैसी संवेदनशील कुकीज़ से निपट रहे हैं तो आपको अपाचे एचटीपी क्लाइंट का उपयोग करना चाहिए।

+0

अब मुझे यह पता लगाने की आवश्यकता है कि http प्रॉक्सी प्रमाणीकरण कैसे करें। मैंने इसे URLConnection के साथ काम किया था, लेकिन अब मुझे इसे समझने की आवश्यकता है। tsok, google prolly मेरे लिए कुछ मिल जाएगा;) धन्यवाद! – dharga

1
uc.getHeaderFields() 
// get cookie (set-cookie) here 

URLConnection conn = url.openConnection(); 
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2"); 
conn.addRequestProperty("Referer", "http://xxxx"); 
conn.addRequestProperty("Cookie", "..."); 
-4

यदि आप लॉगिन के बाद बड़ी मात्रा में डेटा स्क्रैप करने की कोशिश कर रहे हैं, तो आप वेबहर्वेस्ट (http://web-harvest.sourceforge.net/) जैसे स्क्रिप्ट किए गए वेब स्क्रैपर से भी बेहतर हो सकते हैं। मैंने अपनी कुछ परियोजनाओं में इसे बड़ी सफलता के लिए उपयोग किया है।

2

मुझे लगता है कि सर्वर पहले अनुरोध पर निर्धारित नहीं कर सकता कि क्लाइंट कुकीज़ का समर्थन नहीं करता है। तो, शायद सर्वर रीडायरेक्ट भेजता है। रीडायरेक्ट निष्क्रिय करने के लिए प्रयास करें:

uc.setInstanceFollowRedirects(false); 

तो फिर तुम प्रतिक्रिया से कुकीज़ और उन्हें अगले अनुरोध पर का उपयोग करें (अगर आप की जरूरत है) करने के लिए सक्षम हो जाएगा।

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