標籤:url content var 解決 cat 本地圖片 append war loader
今天敲代碼的時候被兩個網路請求的問題搞了一天,不擔心累而且心碎
記錄一下,吃一塹長一智,不知道我老了再來看還能不能看懂
第一個問題:圖片上傳到伺服器
這裡代碼就不貼出來了,使用的post提交的格式。同樣的代碼,在iOS上可以正常上傳,在android上上傳就是network request failed,
我把代碼對比了半天就是一模一樣,然後報這種無厘頭的錯誤著實讓我心碎,後來android調試,iOS調試搞得我
已經快瘋了,最後才發現原來是是我傳的資料不對,上傳圖片到伺服器使用的是本地圖片URL,我忽略了這一點,
總覺得是代碼的問題,問題的方向就是錯誤的,然後左調試右調試才發現不對的地方。以後記住了,像這種post提
交的請求,網路請求失敗的話肯定是資料問題,因為這都沒走進伺服器。
第二個問題:普通的post請求。
這個問題能夠解決純屬偶然,因為我現在還不知道原因出現在哪,情況和第一個比較像,也是post提交,然後報一樣的
錯誤network request failed,,因為剛好把第一個問題解決,再發現這種情況我肯定想肯定是資料不對了,然後就去看資料,
看了半天和後台對比了半天發現不是資料問題,這下真讓我醉了,又是對介面,又是android ,iOS對比調試,我感覺我今
天真是被誰詛咒了明明是一個很簡單的問題卻偏要讓我做不出來,最後解決的也是出於偶然,找了別的地方post請求的,
對比一下,然後以碰運氣的想法寫成這樣
fetch(url,{ method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "fileList=" + file + "&token=" + this.state.token }) .then((response) => response.json())
一開始我是這樣寫的,這不是一樣的,就是大概給個格式,因為我不想重寫了,
這個地方和上面的代碼不同的地方就是這裡用的表單,然後用的options包起來了我們的資料,
對,你猜的沒錯,就是因為這個options的問題,可能我說的不對,但是我的發現就是因為這個問題,
我不用options 包起來像上面的代碼一樣直接請求就OK
let formData = new FormData(); formData.append(‘file‘, { uri: this.state.localimageurl, type: ‘image/jpeg‘, name: ‘photo.jpg‘ }); console.log(formData); let options ={}; options.body = formData; options.headers={"Content-Type":"multipart/form-data"}; options.method=‘POST‘; var url = "http://10.4.19.105:8081/aist-filesvr-web/webUploader/uploadPicture"; fetch(url,options) .then((response)=> response.json()) .then((responseData)=>{
console.warn(responseData);
}) .catch((error) => { console.warn(error); }) .done();
最後我想說今天我很不開心
React Native NetWork request failed