2016-07-30 62 views
6

我正在開發一個使用React Native的Android應用程序。我正在Galaxy Nexus API 23上測試我的應用程序,該應用程序在Android Studio中模擬,並在Mac上運行。React Native在Android上,ajax調用與提取失敗

我希望允許用戶互相共享信息。我使用php和mysql運行一個web服務器,並且我希望應用程序向服務器發出請求以在用戶之間共享數據。

我想使用Fetch API向我的開發服務器發出POST請求。我的JS代碼如下:

var AjaxEngine = { 
    test: function() { 
      return fetch('http://10.0.2.2/test.json') 
       .then((response) => response.json()) 
       .then((responseJson) => { 
        console.log(responseJson); 
        return responseJson.movies; 
       }) 
       .catch((error) => { 
        console.error(error); 
       }); 
     } 
}; 

通過AjaxEngine.test();

叫我在模擬器我收到以下錯誤:

ExceptionsManager.js:70 TypeError: Network request failed at XMLHttpRequest.xhr.onerror (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:23711:8) at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:9740:15) at XMLHttpRequest.setReadyState (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:25157:6) at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:25015:6) at http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:25090:52 at RCTDeviceEventEmitter.emit (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:8977:23) at MessageQueue.__callFunction (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:7065:23) at http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:6969:8 at guard (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:6917:1) at MessageQueue.callFunctionReturnFlushedQueue (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:6968:1)

test.json包括:

{ 
    "message":"hello world" 
} 

當我用'http://10.0.2.2/test.json'替換時,請求成功'http://facebook.github.io/react-native/movies.json',所以函數本身就沒問題。

'http://localhost/test.json''http://127.0.0.1/test.json'都負載在Web瀏覽器,curlwget。我也嘗試用127.0.0.1替換10.0.2.2。我也嘗試使用我的本地IP(129.xxx.x.x)

我需要做些什麼才能使這些請求有效?我如何從模擬的android應用程序訪問在本地主機上運行的開發服務器?

回答

0

如果你捲曲工作,試試-D選項,它將頭文件寫入文件。這樣,你可以看到兩個請求是否都有f.ex。相同的MIME類型。

-D, --dump-header <file> 
      Write the protocol headers to the specified file. 

      This option is handy to use when you want to store the headers 
      that an HTTP site sends to you. Cookies from the headers could 
      then be read in a second curl invocation by using the -b, 
      --cookie option! The -c, --cookie-jar option is a better way to 
      store cookies. 
相關問題