#react-native #.net-core
Вопрос:
Когда я использую Postman, я могу успешно отправить запрос по этому адресу: https://localhost:9001/api/Account/authenticate
.
Однако мое приложение react-native выдает ошибку для того же запроса:
Ошибка типа: Сбой сетевого запроса
Вот мой код запроса:
_login() {
var api = API.concat("api/Account/authenticate");
api = 'https://localhost:9001/api/Account/authenticate';
fetch(api, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data'
},
body: JSON.stringify({
'email': 'superadmin@gmail.com',
'password': '123Pa$word!',
}),
})
// .then((response) => response.json())
.then((res) => {
console.log("res.status", res.status);
console.log('data: ', res.data);
// console.log('jwToken: ', res.data.jwToken);
console.log('message: ', res.message);
console.log('api:', api);
});
}
Комментарии:
1. Я исправил синтаксическую ошибку, которая выглядела как опечатка в вашем коде (не имеющая ничего общего с вашей сетевой ошибкой). Однако вы должны убедиться, что эта правка была точной.
2. Я также рекомендую включить информацию о запросе от почтальона. Я вижу, что вы нашли ответ, но это полезно для других пользователей в будущем; мы просто будем гадать о вашей проблеме.
Ответ №1:
Попробуйте добавить
<uses-permission android:name="android.permission.INTERNET"/>
в AndroidManifest.xml в главном каталоге вашего adroid/app/src/
И эмулятор Android или устройство имеют свою собственную ОС, поэтому вы не можете получить к нему доступ localhost
.
Попробуйте изменить
https://localhost:9001/api/Account/authenticate
Для
https://10.0.2.2:9001/api/Account/authenticate
Комментарии:
1. Да, это есть в файле AndroidManifest.xml. Я использую: эмулятор adb -s-5554 обратный tcp:56789 tcp:56789 он работает. Но не показывать данные JWT json, как Почтальон.
2. пожалуйста, прочтите мой обновленный ответ, надеюсь, он сработает
Ответ №2:
Попробуйте выполнить следующие изменения :
login = () => {
var api = API.concat("api/Account/authenticate");
api='https://localhost:9001/api/Account/authenticate';
fetch({
url: api,
method: 'POST',
headers: {
Accept: 'application/json',
},
body: JSON.stringify({
email: 'superadmin@gmail.com',
password: '123Pa$word!',
}),
})
.then((res) => {
console.log("res.status", res.status);
console.log('data: ', res.data);
// console.log('jwToken: ', res.data.jwToken);
console.log('message: ', res.message);
console.log('api:', api);
})
.catch(err => {
console.log('Error : ', err.message)
})
}
Ответ №3:
Это работает
_login() {
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"email": "superadmin@gmail.com",
"password": "123Pa$word!"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
var api = API.concat("api/Account/authenticate");
fetch(api, requestOptions)
.then(response => response.json())
.then(result => {
console.log('succeeded: ', result.succeeded);
console.log('message: ', result.message);
console.log('errors : ', result.errors);
console.log("res", result);
console.log('data: ', result.data);
console.log("res.data.jwtoken: ", result.data.jwToken);
console.log('api:', api);
})
}