一般情况下不需要为response 设置content-length
通过ie访问,都会计算返回内容的长度,赋值给content-length,并按此长度来显示返回的内容。
但有些浏览器可能不会自动计算,譬如STB内一些低级的浏览器,这时就需要手动计算并赋值。
如 response.setContentLength(content.length());
注意上面“并按此长度来显示返回的内容”,也就是说如果计算长度不对,将会导致显示问题;如 实际长度是300,但setContentLength(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.EOFException
呵呵,一般这种很少遇到,最近碰到了,所以记录一下。
推荐阅读
代码之余轻松一下:当前热门-人民的名义
相关推荐
这些字段提供了关于实体元信息,例如 Allow 字段、Content-Encoding 字段、Content-Language 字段、Content-Length 字段、Content-Location 字段、Content-MD5 字段、Content-Range 字段、Content-Type 字段、...
实体头用于描述实体内容的属性,例如 Content-Encoding、Content-Language、Content-Length 等。 在下载文件时,需要设置 Content-Disposition 头字段来指定文件的名称和类型。但是,如果文件名包含中文字符,可能...
Content-Disposition是HTTP协议中用于控制浏览器如何处理响应数据的一个响应头字段。它通常用于在HTTP响应中指示内容是作为附件处理还是作为普通内容直接在浏览器中展示。当用户在Web系统中操作文件时,常常需要满足...
response.addHeader("Content-Length", String.valueOf(file.length())); // 设置文件类型 response.setContentType("application/octet-stream"); // 获取输出流 OutputStream toClient = new ...
### JavaWeb之HTTP详解 #### 一、HTTP简介 ##### 1.1 HTTP是什么 ...本文详细介绍了HTTP请求与响应的主要组成部分,以及常见的请求方法和响应头部字段,希望能帮助读者更好地理解和应用HTTP协议。
### TCP/IP-HTTP-Header-消息报头 在TCP/IP协议族中,HTTP(超文本传输协议)是一种应用层协议,用于从Web服务器传输超文本到本地浏览器的传输协议。HTTP报文由请求行、状态行、首部字段(Header)、空行以及可选的...
HTTP头部字段分为四类:通用头部字段(General Header)、请求头部字段(Request Header)、响应头部字段(Response Header)以及实体头部字段(Entity Header)。本文将详细介绍这四类头部字段的具体内容及其在HTTP...
这些头部字段按照功能的不同大致可以分为四类:通用头部字段(General Header)、请求头部字段(Request Header)、响应头部字段(Response Header)以及实体头部字段(Entity Header)。为了便于理解,我们可以将...
**HTTP 411 错误**表示服务器需要客户端指定请求消息体的长度,即Content-Length头部字段。这通常发生在POST请求中,当服务器配置为只接受具有明确长度的请求体时。客户在原始脚本中未设置Content-Length头部字段,...
Response.AddHeader("content-length", fileSize.ToString()); // 将文件写入响应流 Response.WriteFile("C:\\aa\\ddd\\wj0000222.zdo", 0, fileSize); ``` **注意事项**: - 文件路径和名称需要正确设置,确保...
# 获取Content-Length字段的值,如果不存在则返回0 fileSize = dict(response.headers).get('Content-Length', 0) # 将大小转换为整数并返回 return int(fileSize) ``` 在这个代码中,我们首先导入了`urllib....
6. **返回内容的字节数**:HTTP响应报文的Content-Length字段指明了服务器返回给浏览器的HTML文件的大小,以字节为单位。 通过这些实验步骤和报告内容,我们可以深入理解HTTP协议的运作机制,包括请求与响应的格式...
这个对象包含了响应头和响应体,其中响应头可以设置"Content-Disposition"来指定文件名,"Content-Length"来指定文件大小,"Accept-Ranges"来声明服务器支持的范围请求。 在实现断点下载时,关键在于处理HTTP的`...
- 示例:`Content-Length: 2048` 3. **Content-Encoding** - 如果响应内容已经被压缩,这个头会指定压缩算法。 - 示例:`Content-Encoding: gzip` 4. **Server** - 服务器软件的名称和版本。 - 示例:`Server...
2. **设置响应长度**:`response.setHeader("Content-Length", length1);`,其中`length1`是文件的长度,通过`fileLoad.length()`获取。 3. **循环读取并写入输出流**: - 创建一个字节数组`byte[] b = new byte...
- **Content-Length**:实体主体的长度。 - **Content-Location**:实体主体的URI。 - **Content-Type**:实体主体的MIME类型。 5. **扩展头**: - **Refresh**:自动刷新页面的时间间隔。 - **Content-...
函数`getRemoteFileSize(url, proxy=None)`的主要作用是通过HTTP或HTTPS请求头部的`Content-Length`字段获取远程文件的大小。以下是该函数的详细分析: ```python def getRemoteFileSize(url, proxy=None): """ ...
请求头包含各种字段,如Host、Content-Type(表明请求体的数据类型,如application/octet-stream表示二进制文件)、Content-Length(指示请求体的大小)。例如: ``` POST /upload HTTP/1.1 Host: example.com ...
- **Content-Length**:响应消息体的长度。 - **Last-Modified**:对象最后一次被修改的时间。 - **Location**:当资源被创建或移动时,服务器可以返回新的URL。 - **Server**:服务器的相关信息。 - **Expires**:...