• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    React Native 使用Fetch發送網絡請求的示例代碼

    來源:懂視網 責編:小采 時間:2020-11-27 22:24:24
    文檔

    React Native 使用Fetch發送網絡請求的示例代碼

    React Native 使用Fetch發送網絡請求的示例代碼:我們在項目中經常會用到HTTP請求來訪問網絡,HTTP(HTTPS)請求通常分為GET、PUT、POST、DELETE,如果不指定默認為GET請求。 在項目中我們常用到的一般為GET和POST兩種請求方式,針對帶參數的表單提交這類的請求,我們通常會使用POST的請求方式。
    推薦度:
    導讀React Native 使用Fetch發送網絡請求的示例代碼:我們在項目中經常會用到HTTP請求來訪問網絡,HTTP(HTTPS)請求通常分為GET、PUT、POST、DELETE,如果不指定默認為GET請求。 在項目中我們常用到的一般為GET和POST兩種請求方式,針對帶參數的表單提交這類的請求,我們通常會使用POST的請求方式。

    我們在項目中經常會用到HTTP請求來訪問網絡,HTTP(HTTPS)請求通常分為"GET"、"PUT"、"POST"、"DELETE",如果不指定默認為GET請求。

    在項目中我們常用到的一般為GET和POST兩種請求方式,針對帶參數的表單提交這類的請求,我們通常會使用POST的請求方式。

    為了發出HTTP請求,我們需要使用到 React Native 提供的 Fetch API 來進行實現。要從任意地址獲取內容的話,只需簡單地將網址作為參數傳遞給fetch方法即可(fetch這個詞本身也就是獲取的意思

    GET

    如果你想要通過 GET 方法去請求數據并轉化成 JSON,可以通過如下代碼實現:

    fetch('https://facebook.github.io/react-native/movies.json')
     .then((response) => response.json())
     .then((responseJson) => {
     return responseJson.movies;
     })
     .catch((error) => {
     console.error(error);
     });
    

    通過上面的請求把返回的 Response 轉化成 JSON Object,然后取出 JSON Object 里的 movies 字段。同時,如果發生 Error,如網絡不通或訪問連接錯誤等, 會被 .catch 。在正常的情況下,我們可以得到如下結果:

    {
     "title": "The Basics - Networking",
     "description": "Your app fetched this from a remote endpoint!",
     "movies": [
     { "title": "Star Wars", "releaseYear": "1977"},
     { "title": "Back to the Future", "releaseYear": "1985"},
     { "title": "The Matrix", "releaseYear": "1999"},
     { "title": "Inception", "releaseYear": "2010"},
     { "title": "Interstellar", "releaseYear": "2014"}
     ]
    }
    

    POST(一)

    當然,上面是最基本的 GET 請求,Fetch還有可選的第二個參數,可以用來定制HTTP請求一些參數。你可以指定Headers參數,或是指定使用POST方法,又或是提交數據等等:Fetch API 還支持自定義 Headers,更換 Method,添加 Body 等。

    let url = "http://www.yousite.com/xxxx.ashx” 
    let params = {"name":"admin","password":"admin"}; 
    fetch(url, {
     method: 'POST',
     headers: {
     'Accept': 'application/json',
     'Content-Type': 'application/json',
     },
     body: JSON.stringify(params)
    })
    

    上面構建了一個基本的 POST 請求,添加了自己的 Headers:Accept和Content-Type,添加了 Body。

    POST(二)

    let url = "http://www.yousite.com/xxxx.ashx”; 
    let params = "username=admin&password=admin”; 
    fetch(url, {
     method: 'POST',
     headers: {
     'Content-Type': 'application/x-www-form-urlencoded'
     },
     body: params,
    }).then((response) => {
     if (response.ok) {
     return response.json();
     }
    }).then((json) => {
     console.log(json)
    }).catch((error) => {
     console.error(error);
    });
    

    POST(三)推薦

    通過上面兩種方法,我們還有一種方式可以發送POST請求,當然這種方式也是被推薦使用的。

    如果你的服務器無法識別上面POST的數據格式,那么可以嘗試傳統的form格式,示例如下:

    let REQUEST_URL = 'http://www.yousite.com/xxxx.ashx';
    
    // `首先我們需要自己創建一個FormData,來存請求參數`
    
    let parameters = new FormData();
    parameters.append("mt", "30013");
    parameters.append("pg", "1");
    parameters.append('ps', '20');
    
    
    fetch(REQUEST_URL, {
     method: 'POST',
     body: parameters
    }).then(
     (result) => {
     if (result.ok) {
     console.log(result)
     result.json().then(
     (obj) => {
     console.log(obj)
     }
     )
     }
     }
    ).catch((error) => {
     console.log(error)
     Alert.alert('Error')
    })
    
    

    推薦這種方法的好處還有一個,就是可以在FormData中直接傳遞字節流實現上傳圖片的功能,代碼如下:

    uploadImage(){ 
     let formData = new FormData(); 
     let file = {uri: uri, type: 'multipart/form-data', name: 'a.jpg'}; 
    
     formData.append("images",file); 
    
     fetch(url,{ 
     method:'POST', 
     headers:{ 
     'Content-Type':'multipart/form-data', 
     }, 
     body:formData, 
     }) 
     .then((response) => response.text() ) 
     .then((responseData)=>{ 
    
     console.log('responseData',responseData); 
     }) 
     .catch((error)=>{console.error('error',error)}); 
    
    }
    
    
    

    處理服務器的響應數據

    上面的例子演示了如何發起請求。很多情況下,你還需要處理服務器回復的數據。
    網絡請求天然是一種異步操作,Fetch 方法會返回一個Promise,這種模式可以簡化異步風格的代碼,關于Promise,請參考:Promise

    處理服務器返回的數據,我們已經在上面第二種和第三種的POST請求中實現了數據的處理。具體代碼參考上面的實現代碼。

    默認情況下,iOS會阻止所有非https的請求。如果你請求的接口是http協議,那么首先需要添加一個App Transport Security的例外。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    React Native 使用Fetch發送網絡請求的示例代碼

    React Native 使用Fetch發送網絡請求的示例代碼:我們在項目中經常會用到HTTP請求來訪問網絡,HTTP(HTTPS)請求通常分為GET、PUT、POST、DELETE,如果不指定默認為GET請求。 在項目中我們常用到的一般為GET和POST兩種請求方式,針對帶參數的表單提交這類的請求,我們通常會使用POST的請求方式。
    推薦度:
    標簽: 使用 請求 代碼
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 99精品国产丝袜在线拍国语| 九九热在线精品视频| 国产suv精品一区二区33| 久久www免费人成精品香蕉| 久久97精品久久久久久久不卡| 在线精品亚洲一区二区| 精品97国产免费人成视频| 精品欧美一区二区三区久久久| 国产精品户外野外| 久久r热这里有精品视频| 久久国产精品成人片免费| 久久精品无码一区二区三区日韩| 久久精品国产一区| 99热门精品一区二区三区无码| 亚洲Av永久无码精品三区在线| 欧美亚洲成人精品| 久久久久人妻精品一区三寸蜜桃| 隔壁老王国产在线精品| 日本精品久久久中文字幕| 99免费精品视频| 国产精品亲子乱子伦xxxx裸| 青草国产精品久久久久久| 亚洲精品无码午夜福利中文字幕| 人妻精品久久久久中文字幕| 精品精品国产高清a毛片| 国产精品第一页在线| 国产精品白丝AV嫩草影院| 亚洲综合精品一二三区在线 | 8AV国产精品爽爽ⅴa在线观看| 久久久久人妻一区精品性色av| 亚洲高清国产AV拍精品青青草原| 亚洲精品国产自在久久| 亚洲欧美国产精品第1页| 亚洲国产精品ⅴa在线观看| 亚洲а∨天堂久久精品| 亚洲精品二三区| 亚洲AV永久无码精品成人| 老司机亚洲精品影院| 国产欧美亚洲精品A| HEYZO无码综合国产精品227| 国产成人精品视频在放|