2008-10-27 50 views
6

Làm cách nào để gọi một url để xử lý kết quả?Nhận tệp từ yêu cầu http trong java

Tôi có một servlet báo cáo độc lập mà tôi liên kết đến để báo cáo. Tôi muốn gửi email các báo cáo này ngay bây giờ, nếu tôi đã làm điều này trong trình duyệt, tôi chỉ có thể sử dụng một xhttprequest, và xử lý các kết quả - về cơ bản tôi muốn làm điều tương tự trong Java, nhưng tôi không chắc chắn làm thế nào để đi về nó.

CẬP NHẬT: Tôi đang tìm cách lấy lại tệp từ url (cho dù đó là pdf hay html, v.v.).

CẬP NHẬT: Điều này sẽ chạy hoàn toàn trên máy chủ - không có yêu cầu kích hoạt gửi email, thay vào đó là email được lên lịch.

Trả lời

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(); 
    } 
} 

Chỉnh sửa: Đã xóa mã.

+0

Hi Albert, cảm ơn vì điều đó - tôi sẽ thử nó ngay bây giờ. – RodeoClown

1

Nếu ý định chạy tài nguyên khác trong khi servlet của bạn đang thực hiện việc chuyển quyền kiểm soát sang tài nguyên khác, bạn có thể thử sử dụng bao gồm (yêu cầu, phản hồi).

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

Bạn có thể đặt điều này trên một servlet và kết quả của tài nguyên khác được đưa vào servlet của bạn.

CHỈNH SỬA: Vì bạn đang tìm cách lấy lại tệp thì giải pháp này cũng phù hợp với điều đó.

+0

Cảm ơn Vincent. Nó không giống như vậy sẽ khá đáp ứng những gì tôi đang tìm kiếm - Tôi không tìm kiếm để bao gồm bất cứ điều gì trong phản ứng. Không có đáp ứng trong trường hợp này (nó là một nhiệm vụ được lên lịch chạy hoàn toàn phía máy chủ). – RodeoClown

Các vấn đề liên quan