【问题标题】:React Native returns network error when calling asp.net apiReact Native 在调用 asp.net api 时返回网络错误
【发布时间】:2022-12-10 12:16:40
【问题描述】:

我正在尝试从本机反应调用我的 asp.net api,但它总是返回网络错误。我已将我的 api cors 策略配置为接受所有来源、所有方法和所有标头。我正在使用 expo 在我的 ios 手机上运行本机反应应用程序,我将 url 配置为 https,因为我已经阅读了默认情况下 ios 阻止 http 请求。我尝试使用 localhost:{port} 作为我的 url 和我服务器的 ip 地址,但没有任何效果。我已经在这个问题上停留了 3 天,非常感谢任何帮助。

我的 C# 代码:

builder.Services.AddCors(opt =>
            {
                opt.AddPolicy("CorsPolicy", policy =>
                {
                    policy.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin();
                });
            });

            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (app.Environment.IsDevelopment())
            {
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            //app.UseHttpsRedirection();
            app.UseCors("CorsPolicy");

            app.UseAuthentication();

            app.UseAuthorization();

            app.MapControllers();

            app.Run();

我的 get 请求是一个非常简单的 get 请求,用于测试目的

        [AllowAnonymous]
        [HttpGet("Get")]
        public async Task<ActionResult> Get()
        {
            return Ok("test");
        }

我的本机代码调用 get 方法:

let getEmployees = () => {
    fetch("https://localhost:7287/get")
      .then((res) => {
        console.log(res.status);
        console.log(res.headers);
        return res.json();
      })
      .then(
        (result) => {
          console.log(result);
        },
        (error) => {
          console.log(error);
        }
      );
  };

在我的本机反应代码中,我使用的是本地主机,但我也尝试使用我的服务器的 IP 地址,但我仍然收到网络请求失败。

这是我从本机反应中得到的错误

Network request failed
at node_modules\whatwg-fetch\dist\fetch.umd.js:541:17 in setTimeout$argument_0
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:214:12 in _allocateCallback$argument_0
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:112:14 in _callTimer
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:357:16 in callTimers
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:417:4 in __callFunction
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:114:6 in __guard$argument_0
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:368:10 in __guard
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:113:4 in callFunctionReturnFlushedQueue

最后要注意的一件事是,我所有的 api 端点都可以在浏览器、邮递员和 swagger 上完美运行。我什至在一个简单的 react.js 项目上尝试过它们并且它们有效。问题仅发生在 React Native 项目上。任何帮助将不胜感激。

【问题讨论】:

  • 你能试试 ngrok.io 吗?
  • 您需要能够从手机访问获取网址。在手机上的浏览器中检查它。
  • @dev404 ngrok 成功了!非常感谢,如果您可以将此作为答案发布以便我批准,那将非常有帮助。

标签: javascript react-native api asp.net-web-api asp.net-core-6.0


【解决方案1】:

你能试试 ngrok.io 吗?它会生成一个 url,您可以在您的应用程序中使用它。

【讨论】:

    猜你喜欢
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 2021-05-25
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    相关资源
    最近更新 更多