网络请求content-type

content-type

content-type只是告诉服务端这个请求是什么类型的数据,一种约定俗成的方式,服务端可以根据情况来解析,当然双方都有义务尊重这样的约定。
常用的有以下几种

————————————————————————
text/plain,body是一个纯文本。一般需要加上编码格式,如text/plain; charset=utf-8。下面just a text就是body

POST / HTTP/1.1
Content-Type: text/plain; charset=utf-8
Host: app.bbtang.me
Connection: close
User-Agent: Paw/3.0.12 (Macintosh; OS X/10.12.2) GCDHTTPRequest
Content-Length: 11

just a text

————————————————————————

application/json,body是一个json格式的字符串,如{“key”:”value”},同样要加上编码格式如application/json; charset=utf-8

POST / HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: app.bbtang.me
Connection: close
User-Agent: Paw/3.0.12 (Macintosh; OS X/10.12.2) GCDHTTPRequest
Content-Length: 15

{“key”:”value”}

————————————————————————

application/x-www-form-urlencoded,body是键值形式的字符串,常见的请求方式,AF的默认方式。

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: app.bbtang.me
Connection: close
User-Agent: Paw/3.0.12 (Macintosh; OS X/10.12.2) GCDHTTPRequest
Content-Length: 9

key=value
————————————————————————

multipart/form-data,这种会比较复杂,AF需要通过FormData来拼接,主要用于上传带参数的文件。需要指定一个boundary标签作为字段分隔。
boundary是随便写的,但需要在头部标明,服务端需要从这里拿到这个标签才能将body分段。

POST / HTTP/1.1
Content-Type: multipart/form-data; charset=utf-8; boundary=X_PAW_BOUNDARY
Host: app.bbtang.me
Connection: close
User-Agent: Paw/3.0.12 (Macintosh; OS X/10.12.2) GCDHTTPRequest
Content-Length: 99

X_PAW_BOUNDARY
Content-Disposition: form-data; name=”key”

value
X_PAW_BOUNDARY

file,根据Content-Type来放入文件数据,和直接放文本有点类似。
————————————————————————

AFHTTPSessionManager有一个requestSerializer属性,该属性用来将请求序列化的。简单来说就是对传入的parameters进行处理。

AFHTTPRequestSerializer是默认的,它有两个子类,一个用于json序列化,一个用于property-list。

在AFHTTPSessionManager里调用普通的get和post方法传入的参数会根据requestSerializer来配置,默认的情况情况下是application/x-www-form-urlencoded。

AF默认没有text/plain这种方式,定义一个AFHTTPRequestSerializer来支持。

猜你喜欢

转载自blog.csdn.net/tianxiawoyougood/article/details/77579468
今日推荐