问题: 使用Alamofire 登录请求数据正常。 其它接口需要添加token验证,java后台一直获取不到传的参数。
分析并解决问题
一.首先排查是不是服务器的问题,使用postman发送请求,可以正常获取。
二.检查Alamofire网络请求的代码。有两个需要注意的地方
encoding
JSONEncoding.default
是放在HttpBody
内的, 比如post
请求(2)
URLEncoding.default
在GET
中是拼接地址的, 比如get
请求(3)
URLEncoding(destination: .methodDependent)
是自定义的URLEncoding
,methodDependent
的值如果是在GET
、HEAD
、DELETE
中就是拼接地址的。其他方法方式是放在httpBody
内的。(4)
URLEncoding(destination: .httpbody)
是放在httpbody
内的例如:Accept:text/xml; ,也就是希望服务器响应发送回来的是xml文本格式的内容
区别:
1.Accept属于请求头, Content-Type属于实体头。
Http报头分为通用报头,请求报头,响应报头和实体报头。
请求方的http报头结构:通用报头|请求报头|实体报头
响应方的http报头结构:通用报头|响应报头|实体报头
2.Accept代表发送端(客户端)希望接受的数据类型。
比如:Accept:text/xml;
代表客户端希望接受的数据类型是xml类型
Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型。
比如:Content-Type:text/html;
代表发送端发送的数据格式是html。
二者合起来,
Accept:text/xml;
Content-Type:text/html
即代表客户端希望接受的数据类型是xml格式,本次客户端请求发送的数据的数据格式是html。
三 , 解决问题
请求头中添加"Accept" : "application/json", 后台可以正常获取参数