[英]React Native app doesn't response my local .net api
伙计们,我刚开始使用 react native,我已经尝试了很多使它与 .net api 一起工作的东西,但是当它变成通过模拟器发送获取请求时,它显示“网络请求失败”。 我用谷歌搜索了所有内容,但没有解决方案,只能获取“10.0.2.2”而不是我的本地 IP。 我做错了什么或者我错过了什么?
应用程序.js
async function getAll() {
console.warn('getAll');
return fetch('https://10.0.2.2:5001/api/Users/getall')
.then(response => response.json().data)
.then(response => console.log(response))
.catch(error => console.error(error));
}
const App: () => Node = () => {
const [users, setUsers] = useState(getAll());
return (
<View style={styles.menu}>
<SectionList
sections={[{title: 'Users', data: users}]}
renderItem={({item}) => (
<Text style={styles.user}>{item.userName}</Text>
)}
renderSectionHeader={({section}) => (
<Text style={styles.header}>{section.title}</Text>
)}
keyExtractor={(item, index) => index}
/>
</View>
);
};
const styles = StyleSheet.create({
sectionContainer: {
marginTop: 32,
paddingHorizontal: 24,
},
sectionTitle: {
fontSize: 24,
fontWeight: '600',
},
sectionDescription: {
marginTop: 8,
fontSize: 18,
fontWeight: '400',
},
highlight: {
fontWeight: '700',
},
user: {
fontSize: 16,
marginTop: 12,
color: '#1e90ff',
},
header: {
fontSize: 24,
marginBottom: 16,
color: '#00bfff',
},
menu: {
backgroundColor: '#006400',
},
});
export default App;
启动设置.json
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:45028",
"sslPort": 44367
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WebAPI": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
启动.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddCors();
services.AddHttpContextAccessor();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebAPI", Version = "v1" });
});
services.AddDependencyResolvers(new ICoreModule[] {
new CoreModule()
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI v1"));
}
app.UseHttpsRedirection();
app.UseWebSockets();
app.UseRouting();
app.UseAuthentication();
app.UseStaticFiles();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
程序.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterModule(new AutofacBusinessModule());
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
数据库上下文.cs
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=localhost\SQLEXPRESS;Database=Mobile;Trusted_Connection=True");
}
用户.cs
public class User : IEntity
{
public int Id { get; set; }
public string UserName { get; set; }
public string Gender { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
我必须对 .Net api 进行更改,它可以工作
在 startup.cs 上评论这一行
//app.UseHttpsRedirection();
启动设置.json
"applicationUrl": "https://localhost:5001", "http://localhost:5000",
将此行更改为
"applicationUrl": "http://localhost:5000",
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.