reactjs 无法在react native中通过axios获取数据

z2acfund  于 2023-11-18  发布在  React
关注(0)|答案(1)|浏览(134)

我正在构建一个react native应用程序,通过django框架中的rest-api,在测试模式或expo go中,代码运行良好,但在apk构建后,数据无法获取

const fetchDataFromAPI = async (code) => {
    setLoading(true);
    setError(null);
    if (ipAddress && profileCode) {
      try {
        const apiUrl = `http://${ipAddress}:8000/api/stock/?i=${profileCode}&s=${code}`;
        setError(apiUrl);
        const response = await Axios.get(apiUrl);
        const stockData = response.data;
        setData(stockData);
      } catch (error) {
        setError('error in fetching');
        setData();
      } finally {
        setLoading(false);
      }
    } else {
      setError('Ip Address Not Found');
    }
  };

字符串
在构建后,获取git repo中的总代码时总是出错,如下所示
https://github.com/pruthviraj-vegi/Ssc-React-Native

1tu0hz3e

1tu0hz3e1#

确保您的应用具有必要的网络权限。将以下权限添加到AndroidManifest.xml文件中的<manifest>标记内:

<uses-permission android:name="android.permission.INTERNET" />

字符串
同时验证Django服务器上的跨域资源共享(CORS)策略。
安装这个库

python -m pip install django-cors-headers


然后将其添加到已安装的应用程序中:

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)


您还需要添加一个中间件类来监听响应:

MIDDLEWARE = [
    ...,
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...,
]


并为CORS指定域,例如:

CORS_ALLOWED_ORIGINS = [
    'http://localhost:3030',
]


参考以下答案在django中配置CORS。
https://stackoverflow.com/a/35761088/7103882

相关问题