Http响应 (response)

Http响应 (response)

一,http响应消息
(一)http协议分为两个部分
1,请求消息:客户端发送给服务器端的数据
2,响应消息:服务器端发送给客户端的数据
设置完响应消息后,浏览器会自动的解析响应消息内容
3,数据格式
响应行、响应头、响应空行、响应体
4,响应字符串格式:
①,响应行
组成:协议+版本+响应状态码
例如:HTTP/1.1(版本) 404、200(状态码)
②,响应头
例如:
Content-Type: text/html;charset=utf-8响应内容的类型(html类型)和编码格式(utf-8)
Content-Language: en
Content-Length: 1085 响应内容的长度
Date: Thu, 30 Apr 2020 05:28:53 GMT 格林尼治时间
③,响应空行
空格
④,响应体:响应发送的数据
例如:
在这里插入图片描述
响应体是页面展示的 html内容
响应头是页面是如何展示的,展示的格式
(二)响应行的响应状态码
打开火狐浏览器的主页,右键检查,点击网络,查看响应头的原始头
1,响应行样式:
HTTP/1.1 200 OK
构成:协议/版本号 状态码 状态码描述
2,响应状态码:
服务器告诉浏览器本次请求响应的一个状态。用一个编码数字来表示状态码都是三维数字。
分类:
1**:服务器接收客户端的消息,但是没有接收完成,服务器等待一段时间,发送 1状态码来确认,是否需要接续发送消息。
2
:代表成功,本次请求响应成功。比如:200
3**:代表重定向(302)。
重定向:a找张三借钱,张三说我没钱,你去找李四,李四有钱。a很听话的去找李四借钱。这个过程,就叫重定向。
代表缓存(304) ∶当客户端访问浏览器的时候,如果服务器的资源固定不经常发生变化,在响应后就直接把这个资源存储在浏览器里面了,所以当客户端再次来访问的时候,服务器响应一个304,告诉客户端,不要从我这拿数据了,从自己家拿吧。如果资源后期发生了变化,就会自动刷新,不再让访问缓存。
4**:客户端错误
代表:404:请求路径没有对应的资源
代表:405:请求方式没有找到对应的请求方法
比如我们建—个servlet,把doGet方法删除,然后使用get请求。
5**:服务器端错误
代表:500:服务器内部出现异常
比如:我们在doget方法里面写一个int i=3/0;
服务器代码错误
(三)响应头
1、格式:
头名称:值

在这里插入图片描述
2,常见响应头的含义
Content-Type:服务器告诉客户端本次响应体的数据格式,编码格式,浏览器会根据响应的值,自动进行数据的解析。
如:查看jsp页面的编码格式contentType=“text/html; charset=utf-8”
修改后,在ie浏览器中查看不同的编码效果
Content-Length:本次响应体字节的个数
Date:日期
Connection:close:连接中断,与服务器失去联系,与网站无关
二,Response对象
功能:设置响应消息
(一)设置响应行
格式:协议/版本号 状态码
设置状态码:setStatus(int sc);
在这里插入图片描述
(二)设置响应头
setHeader(String name, String value)
(三)设置响应体
通过流的方式设置
使用步骤:
1,获取输出流
字符输出流 PrintWriter getWriter()
在这里插入图片描述
字节输出流 ServletOutputStream getOutputStream0
在这里插入图片描述
2,使用输出流,将数据输出到客户端浏览器中。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
你可以使用 ASP.NET Web API 来创建一个 Web 服务,读取文件内容并将其作为文件下载响应返回给客户端。 以下是一个简单的示例代码: ```csharp using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web.Http; public class FileController : ApiController { [HttpGet] public HttpResponseMessage DownloadFile(string filePath) { try { // 读取文件内容 byte[] fileBytes = File.ReadAllBytes(filePath); // 创建 HTTP 响应 var response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new ByteArrayContent(fileBytes); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = Path.GetFileName(filePath); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return response; } catch (Exception e) { // 创建 HTTP 错误响应 var response = new HttpResponseMessage(HttpStatusCode.InternalServerError); response.Content = new StringContent("读取文件失败:" + e.Message); return response; } } } ``` 你需要在 Web 服务中注册该控制器,并启动 Web 服务。然后,你可以通过发送 GET 请求到 `/api/file?filePath=C:\example.txt` 来下载文件。如果文件读取成功,将返回 HTTP 200 OK 响应,并包含文件内容。如果文件读取失败,将返回 HTTP 500 Internal Server Error 响应,并包含错误消息。另外,该代码还会设置响应头,以便浏览器能够正确地将文件下载到本地。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值