2017-06-16 224 views
1

在以原生答案編寫的天氣應用程序上工作時,我在Android上遇到了「網絡請求失敗」錯誤,而應用程序在iOS上正常工作。網絡請求失敗Android

enter image description here

這裏是取功能 -

componentDidMount: function() { 
    navigator.geolocation.getCurrentPosition(
    location => { 
     // this variable will contain the full url with the new lat and lon 
     var formattedURL = REQUEST_URL + "lat=" + location.coords.latitude + "&lon=" + location.coords.longitude+"&APPID=e5335c30e733fc682907a126dab045fa"; 

     // this will output the final URL to the Xcode output window 
     console.log(location.coords.latitude); 
     console.log(location.coords.longitude); 
     console.log(formattedURL); 

     // get the data from the API 
     this.fetchData(formattedURL); 

     }, 
    error => { 
     console.log(error); 
    }); 
    }, 

    // fetchdata takes the formattedURL, gets the json data and 
    // sets the apps backgroundColor based on the temperature of 
    // the location 
    fetchData: function(url) { 
    fetch(url) 
     .then((response) => response.json()) 
     .then((responseData) => { 

     // set the background colour of the app based on temperature 
     var bg; 
     var temp = parseInt(responseData.main.temp); 
     if(temp < 14) { 
      bg = BG_COLD; 
     } else if(temp >= 14 && temp < 25) { 
      bg = BG_WARM; 
     } else if(temp >= 25) { 
      bg = BG_HOT; 
     } 

     // update the state with weatherData and a set backgroundColor 
     this.setState({ 
      weatherData: responseData, 
      backgroundColor: bg 
     }); 
     }) 
     .done(); 
    }, 

我也參考了其他的問題在這裏計算器,但他們都圍繞着變化的localhost像127.0.0.1你的本地IP地址。在我的情況下,我沒有使用localhost。

+0

你在模擬器或物理設備 –

+0

測試它@RaviRaj我在運行的牛軋糖在Nexus 6P模擬器測試它。 –

+1

檢查您的模擬器附近的模擬器選項面板,在那裏你會有更多的選擇,然後去蜂窩和檢查數據狀態和網絡類型。嘗試將網絡類型更改爲「完整」,將數據狀態更改爲「主頁」。檢查它的工作。 –

回答

1

檢查相鄰的Android模擬器選項面板到你的模擬器中,你將有更多的選項然後去細胞和檢查數據狀態網絡類型。嘗試將網絡類型更改爲'完整'並將數據狀態更改爲'主頁'。嘗試對網絡類型和數據狀態的各種選項,並檢查其工作...