Net Core Web Api недоступен в React Native - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь разработать собственное мобильное приложение. Я в начале проекта и уже застрял.

Я создал в VS 2019 новое веб-приложение Api. Я пытаюсь вызвать WeatherForecastController (создан из visual studio).

Я отредактировал файл startup.cs, чтобы избежать проблемы с CORS.

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        //services.AddCors();
        services.AddControllers();
        services.AddMvc();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseCors(builder =>
        {
            builder.AllowAnyOrigin()
            .AllowAnyHeader()
            .AllowAnyMethod();
        });

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

Я установил топор ios в свой Реагируйте на собственные проекты.

И вот как я называю свой API:

componentDidMount() {
axios.get('http://localhost:55622/weatherforecast').then(function (response) {
  console.log("POST RESPONSE: " + JSON.stringify(response));
});

}

Я получаю ошибку:

[Unhandled promise rejection: Error: Network Error]
- node_modules\axios\lib\core\createError.js:15:17 in createError
- node_modules\axios\lib\adapters\xhr.js:80:22 in handleError
- node_modules\event-target-shim\dist\event-target-shim.js:818:39 in EventTarget.prototype.dispatchEvent
- node_modules\react-native\Libraries\Network\XMLHttpRequest.js:574:29 in setReadyState
- node_modules\react-native\Libraries\Network\XMLHttpRequest.js:388:25 in __didCompleteResponse
- node_modules\react-native\Libraries\vendor\emitter\EventEmitter.js:190:12 in emit
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:436:47 in __callFunction
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:111:26 in __guard$argument_0
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:384:10 in __guard
- node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:110:17 in __guard$argument_0
* [native code]:null in callFunctionReturnFlushedQueue

Я пытался использовать оба способа: http и https.

Я также пытался вызвать некоторые publi c apis, например, https://facebook.github.io/react-native/movies.json, и он работает правильно.

Call тот же URL от почтальона, он работает правильно.

enter image description here

Я использую. Net Core 3.0 и вот зависимости моего реагировать родной проект:

  "dependencies": {
"@expo/samples": "~36.0.0",
"@expo/vector-icons": "~10.0.0",
"@react-navigation/web": "~1.0.0-alpha.9",
"axios": "^0.19.1",
"expo": "~36.0.0",
"expo-asset": "~8.0.0",
"expo-constants": "~8.0.0",
"expo-font": "~8.0.0",
"expo-image-picker": "~8.0.0",
"expo-permissions": "~8.0.0",
"expo-web-browser": "~8.0.0",
"galio-framework": "^0.6.3",
"react": "~16.9.0",
"react-dom": "~16.9.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz",
"react-native-gesture-handler": "~1.5.0",
"react-native-maps": "0.26.1",
"react-native-reanimated": "~1.4.0",
"react-native-screens": "2.0.0-alpha.12",
"react-native-signalr": "^1.0.6",
"react-native-web": "~0.11.7",
"react-navigation": "~4.0.10",
"react-navigation-stack": "~1.10.3",
"react-navigation-tabs": "~2.6.2",
"react-redux": "^7.1.3",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0"

}

Не могли бы вы помочь мне найти способ решить эту проблему? Заранее спасибо.

1 Ответ

1 голос
/ 17 января 2020

Вы должны опубликовать sh ваш API в IIS. Вы не можете проверить это с http://localhost url. Сначала проверьте ваш API с помощью PostMan или подобного приложения и опубликуйте sh в своем локальном IIS. Назначьте ему ip из IIS. Затем вызовите его из вашего приложения, как «http://100.293.12.33»

...