react native 與伺服器互動坑
阿新 • • 發佈:2018-12-25
今天遇到兩個坑
一個是以表單formData封裝的JSON格式資料不是標準的json格式,導致伺服器解析資料是錯誤返回400 bad request。例如
sent資料:{"_parts":[["api_account","iphone"],["timestamp",1512961607281],["username","user"],["password","1111"]]}let formData = new FormData(); formData.append("api_account", 'iphone'); formData.append("timestamp", (new Date()).valueOf()); formData.append("username","user"); formData.append("password",'1111'); console.log("sent資料:" + JSON.stringify(formData));
後來改了一種方式可以了
let formdata= JSON.stringify({ "api_account": "iphone", "timestamp": (new Date()).valueOf(), "username": 'user', "password": '1111', }); console.log("==JSON==:" + formdata);
二是iOS模擬器10.3版本訪問http協議有限制,
據說引入了新特性App Transport Security (ATS)
。詳情:App Transport Security (ATS)
新特性要求App內訪問的網路必須使用HTTPS
協議。
但是現在公司的專案使用的是HTTP
協議,使用私有加密方式保證資料安全。現在也不能馬上改成HTTPS
協議傳輸。
NSAppTransportSecurity
型別
Dictionary
。
2、在
NSAppTransportSecurity
下新增NSAllowsArbitraryLoads
型別
Boolean
,值設為
YES
3、iOS10以後版本的童鞋,注意了:NSAppTransportSecurity下不要有其他的key,否則NSAllowsArbitraryLoads會被忽略的.
In iOS 10 and later, and macOS 10.12 and later, the value of this key is ignored if any of the following keys are present in your app’s Info.plist file: NSAllowsArbitraryLoadsInMedia NSAllowsArbitraryLoadsInWebContent NSAllowsLocalNetworking
新手不懂道路深,摸索半天