/ / JSoup के साथ कनेक्शन को रोकें - google-app-engine, jsoup, meta-tags, meta

JSoup के साथ कनेक्शन को रोकें - google-app-engine, jsoup, मेटा-टैग, मेटा

मैं हूँ नहीं इसके साथ बहुत अधिक जानकार नेटवर्किंग (यानी http) या JSoup के लिए आता है। मैं एक url से मेटा टैग सामग्री प्राप्त करने के लिए JSoup का उपयोग कर रहा हूं। मुझे त्रुटि मिल रही है

Connection closed unexpectedly by server at URL: http://blahblah

मेरा कोड यहाँ है

Document doc = Jsoup.connect(url).get();
Elements metas = doc.getElementsByTag("meta");
...

कैसे मैं "कॉन्फ़िगर" JSoup बस हड़पने के लिएवेबपृष्ठ की सामग्री, कनेक्शन बंद करें, और फिर प्राप्त सामग्री को पार्स करने के लिए आगे बढ़ें? मैं इस तरह से सवाल पूछ रहा हूं क्योंकि मुझे लगता है कि कनेक्शन के बंद होने के कारण बहुत लंबा समय लग रहा है। या यह कुछ और है? जैसे सर्वर को पता है कि यह एक मानव कॉलर या ऐसा नहीं है? कहो साइट cnn है या जो भी हो और मैं मेटा-टैग सामग्री के लिए एक समाचार लेख पार्स करने की कोशिश कर रहा हूं। और नहीं मैं क्रॉल नहीं कर रहा हूं: मुझे एक यूआरएल दिया गया है और मैं मैं उस एक पेज से गुजर रहा हूं।

उत्तर:

उत्तर № 1 के लिए 1

हो सकता है कि आपको नीचे कुछ हेडर डेटा भेजना पड़े। कृपया इसे आजमाएँ।

 Document doc = Jsoup
.connect(url.trim())
.timeout(3000)
.header("Host", "someip")
.header("Connection", "keep-alive")
.header("Content-Length", "111")
.header("Cache-Control", "max-age=0")
.header("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36")
.header("Content-Type", "application/x-www-form-urlencoded")
.header("Referer", url.trim())
.header("Accept-Encoding", "gzip,deflate,sdch")
.header("Accept-Language", "en-US,en;q=0.8,ru;q=0.6")
.userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36")
.get();

जवाब के लिए 0 № 2

मुझे बिल्कुल पता नहीं क्यों, लेकिन जब मैं करता हूं तो समस्या बंद हो जाती है

Connection connection = Jsoup.connect(url);
Document doc = connection.get();
Elements metas = doc.getElementsByTag("meta");
...

के बजाय

Document doc = Jsoup.connect(url).get();
Elements metas = doc.getElementsByTag("meta");
...

यह पूरी तरह से मेरे लिए कोई मतलब नहीं है। पर अब जो है वो है। मैंने "कंस्ट्रक्टर्स को भागने" के बारे में सुना है, जो मुझे अलगाव करने के लिए प्रेरित करता है। और जबकि यह शायद एक ही बात नहीं है, लेकिन हुड के तहत कुछ इसी तरह का वूडू हो सकता है जो मुझे समझ में नहीं आता है।