作者RINPE (RIN)
看板MacDev
标题[问题] post json 传值方式?
时间Sun Dec 31 09:22:39 2017
目前遇到的问题是 要与api取值需要用post json格式的参数来完成
自己的作法是先将参数用jsonserialization转为data
之後在request的httpbody 之後用urlsession 来跟api取值
但这样做api的回传结果都是某某参数为空(如果参数有问题的回传结果,如果参数穿错
的也会把错误的参数显示出来、为空就是没传过去)
用抓封包的来看传过去的参数 确实有东西 格式确实是{“title”:test}这种(applicat
ion/json)的
自己用了postMan传入相同参数是没问题的 用抓封包的来看
带入的参数是会变成title=test&sub%5B%5D=1这种的(application/x-www-form-urlenco
ded)
想请问要变成下面这种,是只要在request.setValue设定成application/x-www-form-url
encoded就好吗?
还是传入的参数也有要修改的地方?
另外想请问 如果api回传的不是纯json(含有<br>等等)是不是没办法正常使用?
麻烦各位前辈解答了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.70.7.44
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1514683362.A.085.html
1F:推 tentenlee: 不是很懂 你一下说你抓封包是formdata一下又说json12/31 10:47
那时候查了一下发现post有四种提交数据的方法
用postman 选择formdata和application/x-www-form-urlencoded结果都是正常
但自己用swift传相同参数後 却是失败的 以查的文章看是传json过去(文件也是要我传j
son)
现在想试要怎麽样才能把参数 用跟postman那尝试的一样
2F:推 XXXXLAY: 我都用Miya12/31 12:19
3F:→ XXXXLAY: Moya 12/31 12:19
※ 编辑: RINPE (61.70.7.44), 12/31/2017 13:35:46
4F:推 tentenlee: 纠正一下观念 post的方式只有一种,你说的方式是body内12/31 13:42
5F:→ tentenlee: 的资料格式方式,可以透过定义request的header的 12/31 13:43
6F:→ tentenlee: content-type去让後台判别你是用哪种资料格式,後台固12/31 13:43
7F:→ tentenlee: 定读哪一种的话其实你不加也没差 重点在於body内的资料12/31 13:44
8F:→ tentenlee: 有些套件会依照你设定的送出资料格式去帮你改header12/31 13:44
9F:→ tentenlee: 你还是先说你是用甚麽方式去送request比较好,不然不知 12/31 13:45
10F:→ tentenlee: 怎麽跟你说该怎麽做12/31 13:45
11F:→ yuanruo: form-urlencoded就是你Body格式要带的是aaa=xxx&bbb=yyy12/31 19:07
12F:→ yuanruo: 把字串编成data填入HttpBody,你header的content-type要改12/31 19:08
13F:→ yuanruo: 通常server端会用这种就是你们支援网页或是懒的改12/31 19:09
14F:→ yuanruo: 你用一些第三方的几乎都帮你处理好环境了 所以不用担心12/31 19:10
15F:→ yuanruo: 自己去写api request相关就要注意这些东西 12/31 19:11
16F:→ yuanruo: alomafire不清楚,AFNetWorking则是request时选不同分类12/31 19:12
17F:→ yuanruo: 自动帮你处理四种request 12/31 19:12
18F:→ benjenq: [request setHTTPMethod:@"POST"]01/01 11:23
感谢各位 已顺利解决了 原来是两个参数api那有不同的处理方式
所以我这两个一样的传进去,其中一个会接受不到
※ 编辑: RINPE (61.70.7.44), 01/07/2018 20:08:00