2017-02-12 17 views
7

Я создаю очень легкое приложение api и native-native. Сервер работает хорошо (тестируется с помощью PostMan), но приложение не вызывает сервер. Он блокирует, когда axios должен отправить запрос на отправку (см. Ниже).Axios (in React-native), не вызывающий сервер в localhost

Я отчаянно :-(Теряя слишком месиво время в нем. Пожалуйста, если вы можете помочь мне ...

Вот мой код страницы LogIn. Это отправка создателя действий (работа с Redux) дает адрес электронной почты и пароль:

... 
const LogIn = React.createClass({ 
    submitLogin() { 
    // log in the server 
    if (this.props.email !== '' && this.props.psw !== '') { 
     if (this.props.valid === true) { 
     this.props.dispatch(logIn(this.props.email, this.props.psw)); 
     } else { 
     this.props.dispatch(errorTyping()); 
     } 
    } 
    }, 
... 

электронной почты и пароль Weel извлечены и отправлены создателю действия:

import axios from 'axios'; 
import { SIGNIN_URL, SIGNUP_URL } from '../api'; 
// import { addAlert } from './alerts'; 
exports.logIn = (email, password) => { 
    return function (dispatch) {  
    console.log(email); 
    console.log(password); 
    console.log(SIGNIN_URL); 
    return axios.post(SIGNIN_URL, { email, password }) 
    .then(
     (response) => { 
     console.log(response); 
     const { token, userId } = response.data; 
     dispatch(authUser(userId)); 
     } 
    ) 
    .catch(
     (error) => { 
     console.log('Could not log in'); 
     } 
    ); 
    }; 
}; 
const authUser = (userId) => { 
return { 
type: 'AUTH_USER', 
userId 
}; 
}; 
... 

Три console.log() перед Вардар показывают данные в правильном ш ау. SIGNIN_URL точно так же я использую в почтальоне. ... но аксиомы не звонят.

Просто чтобы дать все карты, это мой магазин:

import thunk from 'redux-thunk'; 
import { createStore, compose, applyMiddleware } from 'redux'; 
import { AsyncStorage } from 'react-native'; 
import { persistStore, autoRehydrate } from 'redux-persist'; 
import reducer from '../reducer'; 
const defaultState = {}; 
exports.configureStore = (initialState = defaultState) => { 
const store = createStore(reducer, initialState, compose(
applyMiddleware(thunk), 
autoRehydrate() 
)); 
persistStore(store, { storage: AsyncStorage }); 
return store; 
}; 

Там нет никакого сообщения об ошибке в отладчик (но один задается AXIOS вызова («Не удалось войти в»)

Я на окнах 10, с:

"axios": "^0.15.3", 
"react": "15.4.2", 
"react-native": "0.38.0", 
"redux": "^3.6.0" 

вызов терпит неудачу, даже когда я готовлю простой GET вызов и сервер должен вернуть простое сообщение (протестировано с почтальоном и браузер):

exports.test =() => { 
    return function() { 
    return axios.get('https://localhost:3000/v1/test') 
    .then(
     (response) => { 
     console.log(response); 
     } 
    ) 
    .catch(
     (error) => { 
     console.log('error'); 
     } 
    ); 
    }; 
}; 

Последний, я судимый также изменить вызов добавления заголовка, как в следующем, так как апи кодируется принимать JSON:

const head = { 
    headers: { 'Content-Type': 'application/json' } 
}; 

exports.test =() => { 
    return function() { 
    return axios.get('https://api.github.com/users/massimopibiri', head) 
    .then(
     (response) => { 
     console.log(response); 
     } 
    ) 
    .catch(
     (error) => { 
     console.log('error'); 
     } 
    ); 
    }; 
}; 

, но даже это не сработало. надеюсь кто-то может мне помочь. Других подобных проблем не было.

+0

Дополнительные Infos: Я работаю с андроида – Pibo

ответ

11

Решение исходило из другого источника, но я отправляю его здесь, чтобы помочь другим, кто ищет ту же проблему. В основном я использовал Android AVD (эмулятор) для создания приложения. Но эмулятор на самом деле является другой машиной, и поэтому он не мог вызвать localhost.

Для решения problème, я должен был отправить запрос следующим образом:

https://10.0.2.2:3000/v1/test 

вместо:

https://localhost:3000/v1/test 

 Смежные вопросы

  • Нет связанных вопросов^_^