http reponseのcontent-lengthフィールド

1080 ワード

一般的には、レスポンスのためにcontent-lengthを設定する必要はありません.
ieアクセスによって、コンテンツの長さを計算し、content-lengthに値を与えます.
この長さで返した内容を表示します.
しかし、いくつかのブラウザは自動的に計算されないかもしれません.例えば、STB内のいくつかの低レベルのブラウザは、手動で計算し、値を割り当てます.
例えば、reponse.set ContintLength(content.length);
上の方に注意してください
この長さで返した内容を表示します.つまり計算長が間違っていると表示されます.実際の長さは300であるが、set ContentLength(200).前の200個の長さの文字しか読めません.
プログラムを強制的に読み込むとエラーが発生します.列を挙げてください.
testServlet

HttpServletResponse response = (HttpServletResponse)arg1;
String content = "i am linxh,i love you";
System.out.println(content.length());
response.setContentLength(content.length()-1);//     
response.getOutputStream().write(content.getBytes());
クライアント

...
String content = "i am linxh,i love you";
byte[] buffer = new byte[content.length()];
in.readFully(buffer);
System.out.println("buufer="+new String(buffer));
この時は戻る桁数が一桁少ないので、java.io.EOFFExceptionに報告します. 
へへ,普通はこのようにとても少なく出会って、最近出会って、だから記録します.