[問題] post json 傳值方式?

看板MacDev作者 (RIN)時間6年前 (2017/12/31 09:22), 6年前編輯推噓3(3015)
留言18則, 4人參與, 7年前最新討論串1/1
目前遇到的問題是 要與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://www.ptt.cc/bbs/MacDev/M.1514683362.A.085.html

12/31 10:47, 6年前 , 1F
不是很懂 你一下說你抓封包是formdata一下又說json
12/31 10:47, 1F
那時候查了一下發現post有四種提交數據的方法 用postman 選擇formdata和application/x-www-form-urlencoded結果都是正常 但自己用swift傳相同參數後 卻是失敗的 以查的文章看是傳json過去(文件也是要我傳j son) 現在想試要怎麼樣才能把參數 用跟postman那嘗試的一樣

12/31 12:19, 6年前 , 2F
我都用Miya
12/31 12:19, 2F

12/31 12:19, 6年前 , 3F
Moya
12/31 12:19, 3F
※ 編輯: RINPE (61.70.7.44), 12/31/2017 13:35:46

12/31 13:42, 6年前 , 4F
糾正一下觀念 post的方式只有一種,你說的方式是body內
12/31 13:42, 4F

12/31 13:43, 6年前 , 5F
的資料格式方式,可以透過定義request的header的
12/31 13:43, 5F

12/31 13:43, 6年前 , 6F
content-type去讓後台判別你是用哪種資料格式,後台固
12/31 13:43, 6F

12/31 13:44, 6年前 , 7F
定讀哪一種的話其實你不加也沒差 重點在於body內的資料
12/31 13:44, 7F

12/31 13:44, 6年前 , 8F
有些套件會依照你設定的送出資料格式去幫你改header
12/31 13:44, 8F

12/31 13:45, 6年前 , 9F
你還是先說你是用甚麼方式去送request比較好,不然不知
12/31 13:45, 9F

12/31 13:45, 6年前 , 10F
怎麼跟你說該怎麼做
12/31 13:45, 10F

12/31 19:07, 6年前 , 11F
form-urlencoded就是你Body格式要帶的是aaa=xxx&bbb=yyy
12/31 19:07, 11F

12/31 19:08, 6年前 , 12F
把字串編成data填入HttpBody,你header的content-type要改
12/31 19:08, 12F

12/31 19:09, 6年前 , 13F
通常server端會用這種就是你們支援網頁或是懶的改
12/31 19:09, 13F

12/31 19:10, 6年前 , 14F
你用一些第三方的幾乎都幫你處理好環境了 所以不用擔心
12/31 19:10, 14F

12/31 19:11, 6年前 , 15F
自己去寫api request相關就要注意這些東西
12/31 19:11, 15F

12/31 19:12, 6年前 , 16F
alomafire不清楚,AFNetWorking則是request時選不同分類
12/31 19:12, 16F

12/31 19:12, 6年前 , 17F
自動幫你處理四種request
12/31 19:12, 17F

01/01 11:23, 7年前 , 18F
[request setHTTPMethod:@"POST"]
01/01 11:23, 18F
感謝各位 已順利解決了 原來是兩個參數api那有不同的處理方式 所以我這兩個一樣的傳進去,其中一個會接受不到 ※ 編輯: RINPE (61.70.7.44), 01/07/2018 20:08:00
文章代碼(AID): #1QI3lY25 (MacDev)