作者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/m.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