多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > 綜合技術(shù) > 《React-Native系列》31、 Fetch發(fā)送POST請(qǐng)求的坑與解決方案

《React-Native系列》31、 Fetch發(fā)送POST請(qǐng)求的坑與解決方案

來(lái)源:程序員人生   發(fā)布時(shí)間:2016-10-06 09:00:57 閱讀次數(shù):5494次
我們?cè)谝骽ttp接口時(shí)候,通常都會(huì)使用get和post的方式,針對(duì)表單提交這類的要求,我們通常采取post方式。

那末在RN中的Fetch API中post提交有哪些坑呢?讓我們擼起來(lái)。


我們先來(lái)講說(shuō)Server真?zhèn)€代碼,通常我們從Request獲得參數(shù)時(shí)的方法為:
String paraValue = request.getParameter(paraName);
我們下面說(shuō)的判斷能不能獲得參數(shù),就是依照這類方法來(lái)獲得。

在 RN中,通常我們會(huì)怎樣寫(xiě)代碼呢?
方案1(不推薦)
let url = "http://127.0.0.1:8080/api/testFetch” let params = "name=admin&password=admin123”; fetch(url , { method: 'POST', headers: {}, body: params, }).then((response) => { if (response.ok) { return response.json(); } }).then((json) => { alert(JSON.stringify(json)); }).catch((error) => { console.error(error); });

此時(shí)我們發(fā)現(xiàn)在Server端沒(méi)法獲得到name和password的值。
換成GET試試,將params追加到url后,發(fā)現(xiàn)ok。那這是甚么情況呢?下面講授。

好,不行,我們就再換1種方法試試唄。
方案2(不推薦):
let params = {"name":"admin","password":"admin123"}; fetch(url , { method: 'POST', headers: {}, body:JSON.stringify(params), }).then((response) => { if (response.ok) { return response.json(); } }).then((json) => { alert(JSON.stringify(json)); }).catch((error) => { console.error(error); });
我們直接將params封裝成1個(gè)JSON對(duì)象,然后在body里將JSON對(duì)象轉(zhuǎn)成字符串傳過(guò)去,發(fā)現(xiàn)然并卵,Server端還是獲得不到值。


好,我們不兜圈子了,直接說(shuō)明緣由。
其實(shí),方案1和方案2都是直接在body里傳遞了1個(gè)字符串,在Server端獲得body的方式以下:
StringBuilder buffer = new StringBuilder(); BufferedReader reader = beat.getRequest().getReader(); String line; while ((line = reader.readLine()) != null) { buffer.append(line); } String body = buffer.toString();
通過(guò)這類方法我們可以獲得到傳入的字符串。
既然能獲得到字符串,那末我們也能夠拿到我們傳入的值了,可以轉(zhuǎn)JSON、或按&切割字符串,只不過(guò)這類解決方案好像有點(diǎn)挫啊!!!

或許你會(huì)問(wèn)在jquery中,我們就是依照方案1這類方式做的啊,怎樣好使呢?
答:由于參數(shù) "name=admin&password=admin123” 在jquery中,傳入對(duì)象框架會(huì)自動(dòng)封裝成formData的情勢(shì),fetch沒(méi)有這個(gè)功能。

終極方案(推薦使用):

既然fetch不會(huì)自動(dòng)轉(zhuǎn)FormData,那我們自己new1個(gè)FormData,直接傳給body。
在FormData中也能夠傳遞字節(jié)流實(shí)現(xiàn)上傳圖片的功能。參考:http://blog.csdn.net/codetomylaw/article/details/52446786
let formData = new FormData(); formData.append("name","admin"); formData.append("password","admin123"); fetch(url , { method: 'POST', headers: {}, body: formData, }).then((response) => { if (response.ok) { return response.json(); } }).then((json) => { alert(JSON.stringify(json)); }).catch((error) => { console.error(error); });
這樣我們就能夠在Server端獲得到name和password的值了。
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产三级手机在线 | 国内精品免费一区二区三区 | 久久精品国产999久久久 | 成人在色线视频在线观看免费大全 | 国产成人久久精品二区三区牛 | 免费国产成高清人在线视频 | 国产欧美日韩免费 | 日韩理论片在线观看 | 依人在线观看 | 亚洲天堂国产精品 | 成人在线观看不卡 | 337p日本欧美在线观看 | 黑人巨大 | 最近高清中文字幕在线国语5 | 国产成人永久免费视 | yy6080久久亚洲精品 | www.亚洲5555.com | 78m成人亚洲 | 成人不卡在线 | 国产精品久久久久免费 | 成人无遮挡毛片免费看 | 欧美成人午夜片一一在线观看 | 波多野结衣久久精品 | 又粗又硬又黄又爽的免费视频 | 一区二区三区中文 | 午夜dj视频在线观看免费 | 亚洲图片综合 | 最近中文字幕免费mv视频8 | 亚洲aaaa级特黄毛片 | 69热在线 | 国产精品久久久久久久久久久久久久 | 精品欧美日韩一区二区 | 最新亚洲精品国自产在线 | 国内精品久久影视 | 欧美人与牲动交a欧美精品 欧美人与牲动交xxxx | 亚洲一片| 国产91精品一区二区 | 中文字幕一区二区三区精彩视频 | 亚洲欧美一区二区三区不卡 | 一级毛片在线 | 亚州免费一级毛片 |