了解content-type

一.什么是Content-Type

Content-Type表示内容类型和字符编码。内容类型也叫做MIME类型。是Internet Media Type,互联网媒体类型。在互联网上传输的数据有不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。

请求头中的content-type,就是 B端发给S端的数据类型描述 。即告诉服务器端,我给你传的数据是某种类型的,服务器端针对不同类型的数据,采取不同的处理方式。

响应头中的content-type,就是 S端发给B端的数据类型描述 。即告诉浏览器端,我给你发的是什么样格式的数据,那么浏览器端针对不同类型的数据,采取不同的处理方式。

二.语法格式:

1、类型格式

type/subtype(;parameter)? type

参数 说明
type 主类型,任意的字符串,如text,如果是*号代表所有
subtype 子类型,任意的字符串,如html,如果是*号代表所有;
parameter 可选,一些参数,如Accept请求头的q参数, Content-Type的 charset参数

2、常见的媒体格式类型

类型 说明
text/html HTML格式
ext/plain 纯文本格式
text/xml XML格式
image/gif gif图片格式
image/jpeg jpg图片格式
image/png png图片格式
application/xhtml+xml XHTML格式
application/xml    XML数据格式
application/atom+xml Atom XML聚合格式
application/json JSON数据格式
application/pdf  pdf格式
application/msword  Word文档格式
application/octet-stream  二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
multipart/form-data 在表单中进行文件上传时

3、Content-Type 和 Accept 区别

Http报头:通用报头,请求报头,响应报头和实体报头。

请求方的http报头结构:通用报头,请求报头,实体报头

响应方的http报头结构:通用报头,响应报头,实体报头

参考链接:HTTP中的Content-Type和Accept 

  •  区别:
Accept Content-Type
请求头 实体头
发送端(客户端)希望接受的数据类型 发送端(客户端|服务器)发送的实体数据的数据类型
  •  示例:

 Accept:text/xml; ——》代表客户端希望接受的数据类型是xml
Content-Type:text/html; ——》代表发送端发送的数据格式是html

三、Content-Type用法

1.要把文件响应给浏览器,就是把文件通过response返回给浏览器.然后浏览器解析并完成下载.

下面这种是通用方法.

已验证成功

 //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型  
response.setContentType("multipart/form-data");  
 //2.设置文件头:最后一个参数是设置下载文件名(注意是带后缀的)
String name = new String(fileName.getBytes("gb2312"), "ISO8859-1");
response.setHeader("Content-Disposition", "attachment;fileName="+name);  

2.用HttpURLConnection调别人的第三方接口,要设置request.

1)第三方接口需要传json格式参数

已验证

            //设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");  //维持长链接
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");

 2)第三方接口需要传文件

  未验证


String Boundary = UUID.randomUUID().toString(); // 文件边界

// 1.开启Http连接
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setConnectTimeout(10*1000);
conn.setDoOutput(true); // 允许输出

// 2.Http请求行/头
conn.setRequestMethod("POST");
conn.setRequestProperty("Charset", "utf-8");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary="+Boundary);

// 3.Http请求体
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeUTF("--"+Boundary+"\r\n"
            +"Content-Disposition: form-data; name=\"file\"; filename=\"filename\"\r\n"
            +"Content-Type: application/octet-stream; charset=utf-8"+"\r\n\r\n");
InputStream in = new FileInputStream(file);
byte[] b = new byte[1024];
int l = 0;
while((l = in.read(b)) != -1) out.write(b,0,l); // 写入文件
out.writeUTF("\r\n--"+Boundary+"--\r\n");
out.flush();
out.close();
in.close();

// 4.Http响应
BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
String line = null;
while ((line=bf.readLine())!=null) {
    System.out.println(line);
}

 3)第三方接口需要传文件+其他参数

有点复杂,自己百度,或者我后面遇到再总结

content type的研究到此为止吧!!!!!! 后面项目遇到了自己百度


————————————————
原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43453386/article/details/83512451

你可能感兴趣的:(服务器,运维)