2013-04-27 29 views
19

私はHttpUrlConnection(私が開発しているサーバーとクライアントの間のステートフルプロトコルの一部として)を再利用することに興味があります。 永続的なhttpのためのConnection = keep-aliveヘッダーがあることは知っています。 今、私はそのような議会を再利用する方法を知りたい。 私はこのコードを書かれている: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」ヘッダを再送しない、私は再接続などを試してみましたが、何も動作するようになっていません。

とサーバもresponse.setHeader("Connection", "keep-alive");

を実行し、私は多くのフォーラムで見てきたが、誰がこのことについて書いてありません。多分HttpURLConnectionはこれを処理しないでしょうか?

+0

@Kowser意味のないコメントです。 HTTPの仕様は* about *ヘッダとボディです。 HttpURLConnectionのAPIについて何も言及していません。 – EJP

答えて

36

あなたはしていません。これを閉じて新しいものを作成します。 TCPコネクションプーリングとキープアライブはバックグラウンドで行われます。

+3

華麗で、これはうまくいかないということも私には起こりませんでした。これが別のつながりを開くと確信しました。 – user967710

+1

それがしばしばしない点を除いて、不明確な理由があります。 – Tuntable

+0

@aberglas 7年間稼働していたプロダクションコードではこれを見たことがありません。証拠がある場合はそれを生産してください。非調達の逸話では不十分です。 – EJP