content-typejson的简单介绍
本篇文章给大家谈谈content-typejson,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、content-type application/json 请求 服务端怎么获取请求数据?
- 2、接收 Content-type: application/json 的数据
- 3、什么是content-type类型
- 4、Content-Type 详解
- 5、HTTP 请求头中的Content-Type类型
content-type application/json 请求 服务端怎么获取请求数据?
在Android/java平台上实现POST一个json数据:
JSONObject jsonObj = new JSONObject();
jsonObj.put("username", username);
jsonObj.put("apikey", apikey);
// Create the POST object and add the parameters
HttpPost httpPost = new HttpPost(url);
StringEntity entity = new StringEntity(jsonObj.toString(), HTTP.UTF_8);
entity.setContentType("application/json");
httpPost.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(httpPost);
用curl可执行如下命令:
curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password"岁陪梁:"test"}'
用jQuery:
$.ajax({
url:url,
type:"POST",
data:data,
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(){
...
}
})
服务端(Server)是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。一般大型的服务端都是乱扒在linux环境下搭建。
服务端不具备运乎运算能力,因为服务端同时会与多个客户端建立连接,一旦服务端进行运算的话,就会占用大量的资源,从而影响到其他客户端的通信。
服务端是一种有针对性的服务程序。它的主要表现形式以“windows窗口程序”与“控制台”为主。一般大型的服务端都是在linux环境下搭建。运行服务端的电脑称之为“服务器”。
[img]接收 Content-type: application/json 的数据
工作中会遇到 请求头是 Content-type: application/json 的请求,比如微信开发里面,或者把宽正请求体序列化为json传过来等情况。
微信氏巧举的文档说用 $GLOBALS ["HTTP_RAW_POST_DATA"] 来接收数据,对于歼碧老版本的PHP是可行的。
到新版本的PHP 好像弃用了,改用 file_get_contents('php://input') 来接受数据。用法和 $_POST 一样,
什么是content-type类型
Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。
Content-Type是Http的实体首部字段,用于说明请求或返回模胡的消息主体是用何种方式编码,在request header和response header里都存在。
常用类型:
一、application/x-www-form-urlencoded
1、浏览器的原生form表单。
2、提交的数据按照 key1=val1key2=val2 的方式进行编码,key和val都进行了URL转码。
二、multipart/form-data
常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctype 等于这个值。
首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。
消息主体里按照字租胡段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。
三、application/json
消息主体是序列化后的 JSON 字符串,这个类型越来越旦型拦多地被大家所使用。
四、text/xml
是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。
Content-Type 详解
Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。最初MIME是用于电子邮件系统的,后来HTTP也采用了这一方案。
在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析并展示html等等。
Content-Type:type/subtype ;parameter
例如:
Content-Type: text/html;
Content-Type: application/json;charset:utf-8;
常见的Content-Type有数百个,下面例举了一些
上面的Content-Type,我们只认得就好,但是下面有4种是需要我们清楚运慧他们的区别及牢记在心的。
HTTP会将请求参数用key1=val1key2=val2的方式进行组织,并放到请求实体里面,注意如果是中文或特殊字符如"/"、","、“:" 等会自动进行URL转码。不支持文件,一般用于表单提交。
下面是一个例子:
与application/x-www-form-urlencoded不同,这是一个多部分多媒体类型。首先生成了一个 boundary 用于分割不同的字段,在请求实体里每个参数以------boundary开始,然后是附加信息和参数名,然后是空行,最后是参数内容。多个参数将会有多个boundary块。如果参数是文件会有特别的文件域。最后以------boundary–为结束标识。multipart/form-data支持文件上传的格式,一般需要上传文件的表单则用该类型。
下面是一个例基尘子:
JSON 是一种轻量级的数据格式,以“键-值”对的方式组织的数据。这个使用这个类型,需要参数本身就是json格式的数据,参数会被直接放到请求实体里,不进行任何处理。服务端/客户端会按json格式解析数据(约定好的情况下)。
与application/json类似,这里用的是xml格式的数据,text/xml的话,将忽略xml数据里的编码格式, 参考 。
一般我们在开发的过程中需要注意客户端发送请求(Request)时的Content-Type设置,特别是使用ajax的时候,如果设置得不准确,很有可能导致请求失败。比如在spring中,如果接口使用了@RequestBody,spring强大的自动解析功能,会将请求实体的内容自动转换为Bean,但前提是请求的Content-Type必须设置为application/json,否正就会返回415错误。
注:415 错误是 Unsupported media type,即不支持的媒体类型。
建议:
服务端响应(Response)的Content-Type最好也保持准确,虽然一般web开发中,前搏悄禅端解析响应的数据不会根据Content-Type,并且服务端一般能自动设置准确的Content-Type,但是如果乱设置某些情况下可能会有问题,比如导出文件,打开图片等。如果在spring项目里使用@ResponseBody,spring会将响应的Content-Type设置为application/json;charset=UTF-8;,可能会导致文件无法导出,需要注意下。
response的Content-Type设置建议:
下面的一个设置response的Content-Type的例子:
参考
《HTTP 权威指南》
什么是json
常见的Content-Type
application/xml 和 text/xml的区别
postman里的Content-Type
HTTP 请求头中的Content-Type类型
在开发中,当前端要 POST 发送数据到后端时,通常需要注意设置请求头 header 中的 Content-Type 类型。
Content-Type 的作用是让服务器端对 post 请求中请求体 entity body 中的数据进行解码,获取到对应的数据格式。
HTTP 中的 post 请求使用最多的Content-Type 类型是: application/json。
Content-Type 的几扮局种常见类型有:
下面将分别对他们进行讲解:
最常见的 POST 提交数据的方式,原生Form表单,如果不设置 enctype 属性,默认为application/x-www-form-urlencoded 方式提交数据。
一个常见的 POST 数据提交的方式, Form 表单的 enctype 设置为multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符(这就是boundary的作用)分开。
它既可以上传键值对,也可以上传文件,甚至多个文件。当上传的字段是文件时,会有Content-Type来说明文件类型;Content-disposition,用来说明字段的一些信息。每部分都是以 –boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(字段、文本或二进制等)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 –boundary– 标示结束。
用来告诉服务端消息主体是序列化后的 JSON 字符串,其中一个好处就是JSON 格式支持碧慧比键值对复杂得多的结构化数据。
提供统一悔缺答的方法来描述和交换独立于应用程序或供应商的结构化数据
用来传输二进制文件类型
关于content-typejson和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。