2008-10-27 3 views
6

में http अनुरोध से फ़ाइल प्राप्त करना परिणाम को संसाधित करने के लिए मैं एक यूआरएल कैसे कॉल करूं?जावा

मेरे पास एक स्टैंड-अलोन रिपोर्टिंग सर्वलेट है जो मैं रिपोर्ट के लिए लिंक करता हूं। मैं अब इन रिपोर्टों को ईमेल करना चाहता हूं, अगर मैं ब्राउज़र में ऐसा कर रहा था, तो मैं सिर्फ एक xhttprequest का उपयोग कर सकता हूं, और परिणामों को संसाधित कर सकता हूं - मैं मूल रूप से जावा में एक ही चीज़ करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि कैसे जाना है यह।

अद्यतन: मैं यूआरएल से फ़ाइल वापस लेना चाहता हूं (चाहे वह पीडीएफ या एचटीएमएल आदि हो)।

अद्यतन: यह पूरी तरह से सर्वर पर चल रहा है - ईमेलिंग को ट्रिगर करने का कोई अनुरोध नहीं है, बल्कि यह एक निर्धारित ईमेल है।

उत्तर

7
public byte[] download(URL url) throws IOException { 
    URLConnection uc = url.openConnection(); 
    int len = uc.getContentLength(); 
    InputStream is = new BufferedInputStream(uc.getInputStream()); 
    try { 
     byte[] data = new byte[len]; 
     int offset = 0; 
     while (offset < len) { 
      int read = is.read(data, offset, data.length - offset); 
      if (read < 0) { 
       break; 
      } 
      offset += read; 
     } 
     if (offset < len) { 
      throw new IOException(
       String.format("Read %d bytes; expected %d", offset, len)); 
     } 
     return data; 
    } finally { 
     is.close(); 
    } 
} 

संपादित करें: कोड साफ़ करें।

+0

हाय अल्बर्ट, इसके लिए धन्यवाद - मैं इसे आजमाउंगा। – RodeoClown

1

यदि कोई अन्य संसाधन चलाने का इरादा है, तो आपका सर्वलेट अन्य संसाधनों पर नियंत्रण स्थानांतरित करने के साथ निष्पादित कर रहा है, तो आप शामिल (अनुरोध, प्रतिक्रिया) का उपयोग करने का प्रयास कर सकते हैं।

RequestDispatcher dispatcher = 
    getServletContext().getRequestDispatcher("/url of other resource"); 
if (dispatcher != null) 
    dispatcher.include(request, response); 
} 

आप इसे सर्वलेट पर डाल सकते हैं और अन्य संसाधन का परिणाम आपके सर्वलेट पर शामिल किया गया है।

संपादित करें: चूंकि आप एक फ़ाइल वापस पाने की तलाश में हैं, तो यह समाधान इसके लिए भी काम करता है।

+0

धन्यवाद विन्सेंट। ऐसा लगता है कि मैं जो कुछ भी ढूंढ रहा हूं उससे काफी मिल जाएगा - मैं प्रतिक्रिया में कुछ भी शामिल नहीं कर रहा हूं। इस उदाहरण में कोई प्रतिक्रिया नहीं है (यह एक निर्धारित कार्य है जो पूरी तरह सर्वर-साइड चलाता है)। – RodeoClown