Ошибка: сетевая ошибка при использовании axios в React Native, проблема только в iOS и Android

Привет всем, у меня проблема с вызовом apis моего сервера .net-core из симуляторов iOS и Android, а из браузера он работает. В моем Backend CORS включены:

public void ConfigureServices(IServiceCollection services){
            services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));

            services.AddMvc();

            services.AddControllers();
        }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){
    if (env.IsDevelopment()){
         app.UseDeveloperExceptionPage();
    }
    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseCors("MyPolicy");
    app.UseEndpoints(endpoints =>{
       endpoints.MapControllers();
    });
}

Служба axios GET:

export function axiosGet():Promise<any>{

  
  const url = "https://localhost:5004/api/Aliments/";
  
  return axios.get(url)
      .then(response => {

          return response.data;
      })
      .catch(error => {
          console.info(error);
      });
};

Как вы думаете, почему когда я вызываю API из симуляторов IOS/Android, мне возвращается эта ошибка?

Error: Network Error
    at createError (createError.js:16)
    at EventTarget.handleError (xhr.js:84)
    at EventTarget.dispatchEvent (event-target-shim.js:818)
    at EventTarget.setReadyState (XMLHttpRequest.js:600)
    at EventTarget.__didCompleteResponse (XMLHttpRequest.js:395)
    at XMLHttpRequest.js:508
    at RCTDeviceEventEmitter.emit (EventEmitter.js:189)
    at MessageQueue.__callFunction (MessageQueue.js:416)
    at MessageQueue.js:109
    at MessageQueue.__guard (MessageQueue.js:364)

РЕДАКТИРОВАТЬ 1 Я пытался изменить IP-адрес хоста на 192.168.1.104 (это IP-адрес локальной сети, на котором размещен мой сервер)

это мой файл launchSettings.json

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:59803",
      "sslPort": 44303
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "MyApp",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "MyApp": {
      "commandName": "Project",
      "launchBrowser": false,
      "launchUrl": "MyApp",
      "applicationUrl": "https://192.168.1.104:5004;",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Ваш симулятор подключен к Интернету?

Akif 23.12.2020 18:14

Симуляторы подключены в режиме Lan, потому что я использую expo.

ALD 23.12.2020 22:51
0
2
5 686
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

IP-адрес симулятора отличается от IP-адреса вашего хост-компьютера. Хотя они находятся в одной локальной сети. Вы можете изменить IP в этом URL.

const url = "https://[host ip]:5004/api/Aliments/";

IP-адрес можно запросить с помощью: ipconfig в cmd.

этот URL-адрес является адресом сервера

ALD 24.12.2020 10:54

@ALD, вы используете localhost, localhost — это адрес симулятора. Таким образом, вы можете изменить его на определенный IP-адрес, например: 1.1.2.3:5000.

Karney. 24.12.2020 10:58

Удалите services.AddMvc();, потому что он дублируется с services.AddControllers().

Karney. 24.12.2020 11:04

я использовал se follow url = "192.168.1.104:5004/api/Aliments" и изменил мой launchSettings.json в BE. Я только что разместил файл launchSettings.json в основном сообщении.

ALD 24.12.2020 12:04

Вы меняете адрес в axiosGet? const url = "https://192.168.1.104:5004/api/Aliments/"; `launchSettings.json` изменять не нужно.

Karney. 25.12.2020 02:25

да, я делаю это, но он возвращает мне в консоли эту ошибку GET https://192.168.1.104:5004/api/Aliments/ net::ERR_CONNECTION_REFUSED

ALD 25.12.2020 11:55

меняя applicationUrl на https://192.168.1.104:5004 в моем файле launchSettings.json, работает только через браузер, в симуляторах делать нечего.

ALD 25.12.2020 12:15
Ответ принят как подходящий

Вы используете https на локальном хосте (почти автоматически подписанный сертификат) на нестандартном порту https. В разработке (за исключением особых случаев) вы можете использовать протокол http. Попробуйте перейти с https на http, все должно работать.

Большое спасибо, теперь он отлично работает на локальном хосте.

ALD 28.12.2020 00:25

Другие вопросы по теме