[問題] post json 傳值方式?

作者: RINPE (RIN)   2017-12-31 09:22:39
目前遇到的問題是 要與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>等等)是不是沒辦法正常使用?
麻煩各位前輩解答了
作者: tentenlee (天天)   2017-12-31 10:47:00
不是很懂 你一下說你抓封包是formdata一下又說json
作者: XXXXLAY (金城武(本尊))   2017-12-31 12:19:00
我都用MiyaMoya
作者: tentenlee (天天)   2017-12-31 13:42:00
糾正一下觀念 post的方式只有一種,你說的方式是body內的資料格式方式,可以透過定義request的header的content-type去讓後台判別你是用哪種資料格式,後台固定讀哪一種的話其實你不加也沒差 重點在於body內的資料有些套件會依照你設定的送出資料格式去幫你改header你還是先說你是用甚麼方式去送request比較好,不然不知怎麼跟你說該怎麼做
作者: yuanruo (罪を憎んで人を憎まず)   2017-12-31 19:07:00
form-urlencoded就是你Body格式要帶的是aaa=xxx&bbb=yyy把字串編成data填入HttpBody,你header的content-type要改通常server端會用這種就是你們支援網頁或是懶的改你用一些第三方的幾乎都幫你處理好環境了 所以不用擔心自己去寫api request相關就要注意這些東西alomafire不清楚,AFNetWorking則是request時選不同分類自動幫你處理四種request
作者: benjenq (Ben(憋))   2016-01-01 11:23:00
[request setHTTPMethod:@"POST"]

Links booklink

Contact Us: admin [ a t ] ucptt.com