2008-12-01 26 views
18

Mã của tôi là như sau:Cách thích hợp để đặt tiêu đề trong URLConnection là gì?

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

Is it ok nếu tôi đặt tiêu đề trước khi tôi nhận được InputStream? Tiêu đề của tôi sẽ được gửi đi hay máy chủ sẽ thấy tác nhân người dùng mặc định của URLConnection (nếu có)?

Trả lời

20

Các tiêu đề phải được đặt trước khi nhận được InputStream để có bất kỳ ảnh hưởng nào - IllegalStateException sẽ bị hủy nếu kết nối đã được mở.

Đặc biệt, tiêu đề User-Agent sẽ được gửi nếu tiêu đề đã được đặt.

Xem URLConnection JavaDoc.

+1

Liên kết này bị hỏng. – Fabii

4

Để trả lời câu hỏi, mã đúng. Khoảnh khắc getInputStream(), một HTTP get được gửi đến máy chủ đích.

Một phụ lưu ý trên user-agent, nếu bạn không cài đặt nó, URLConnection sẽ gửi mặc định một dù sao, đó là:

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

tôi muốn khuyên bạn không dùng cấu trúc ở mức độ thấp như vậy dưới dạng URLConnection. Có rất nhiều thư viện để gửi các yêu cầu HTTP, với máy khách HTTP HTTP nổi bật nhất.

+0

(nên bình luận, không trả lời câu hỏi) – BadZen

+0

Ứng dụng khách HTTP Apache không được khuyến khích và không được chấp nhận trong Khung công tác Android. Google khuyến khích sử dụng HttpURLConnection. – afollestad

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