2013-04-27 36 views
19

Tôi quan tâm đến việc tái sử dụng một HttpUrlConnection (như là một phần của một giao thức statefull giữa máy chủ và khách hàng mà tôi đang phát triển). Tôi biết rằng có một tiêu đề Connection = keep-alive cho http liên tục. Bây giờ, tôi muốn biết làm thế nào để tái sử dụng như một conenction. Tôi đã viết mã này:Làm cách nào để sử dụng lại HttpUrlConnection?

URL u = new java.net.URL("http://localhost:8080/Abc/Def"); 
HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
c.setRequestMethod("GET"); 
c.setRequestProperty("Connection", "keep-alive"); 
c.setHeader("A","B"); 
c.getInputStream() //here I see that server gets my messages (using DEBUG) 
c.setHeader("B","C"); // 

Bây giờ làm thế nào để gửi lại này "B" header đến máy chủ, tôi đã cố gắng tái kết nối vv, nhưng không được nó để làm việc.

Và máy chủ cũng thực hiện response.setHeader("Connection", "keep-alive");

Tôi đã nhìn vào nhiều diễn đàn, nhưng không ai viết về vấn đề này. Có lẽ HttpURLConnection không xử lý điều này?

+0

@Kowser Một nhận xét vô nghĩa. Đặc tả HTTP là * về * tiêu đề và nội dung. Nó không có gì để nói về API cho HttpURLConnection. – EJP

Trả lời

36

Bạn không. Bạn đóng cái này và tạo cái mới. Nó kết nối TCP gộp lại và giữ gìn đằng sau hậu trường.

+3

Rực rỡ, nó thậm chí không xảy ra với tôi rằng điều này có thể làm việc - Tôi nghĩ chắc chắn rằng điều này sẽ mở một kết nối khác. – user967710

+1

Ngoại trừ việc thường không, vì những lý do không rõ ràng. – Tuntable

+0

@aberglas Không bao giờ thấy rằng, trong mã sản xuất đã được chạy trong bảy năm. Nếu bạn có bằng chứng xin vui lòng sản xuất nó. Giai thoại không có nguồn gốc là không đủ. – EJP

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