1
resposta

Não é possível efetuar login

Ao tentar efetuar login, a API retorna erro 404 para a URL enviada. Percebi que ontem (25/06) estavam manipulando a API, pois as fotos continham comentários novos (rsrs). Abaixo coloquei os códigos da função "render", "efetuaLogin" e "constructor". Podem me dar uma ajuda?

export default class Login extends Component
{
    render() {
        return (

            <View style={styles.centerContainer}>

                <View>
                    <Text
                        style={styles.title}>
                        Instalura
                    </Text>
                </View>

                <View>

                    <TextInput
                        style={styles.textInput}
                        placeholder="Usuário..."
                        onChangeText={texto => this.setState({usuario: texto})}
                        autoCapitalize = "none">
                    </TextInput>


                    <TextInput
                        style={styles.textInput}
                        placeholder="Senha..."
                        onChangeText={texto => this.setState({senha: texto})}
                        secureTextEntry={true}>
                    </TextInput>

                    <Button 
                        title="LOGIN"
                        onPress={this.efetuaLogin.bind(this)}
                        style={styles.loginButton}>
                    </Button>

                </View>

                <Text style={styles.mensagem}>
                    {this.state.mensagem}
                </Text>

            </View>

        );
    }

constructor() {
        super();
        this.state = {
            usuario: '',
            senha: '',
            mensagem: ''
        }
    }

efetuaLogin() {

        const uri = "http://localhost:8081/api/public/login";

        const requestInfo = {
            method: 'POST',
            body: JSON.stringify({
                login: this.state.usuario,
                senha: this.state.senha,
                mensagem: ''
            }),
            headers: new Headers({
                'Content-type': 'application/json'
            })
        }

        fetch(uri, requestInfo) 
            .then(response => {
                if(response.ok)
                    return response.text();

                throw new Error("Não foi possível efetuar o login.");
            })
            .then(token => {
                AsyncStorage.setItem('token', token);
                AsyncStorage.setItem('usuario', this.state.usuario);

                this.props.navigator.resetTo({
                    screen: 'App',
                    title: 'Instalura',
                })
            })
            .catch(e => this.setState({mensagem: e.message}))
    }
1 resposta

Olá Arthur, tudo bem ?

Não consegui enxergar problema olhando direto seu código. 404 é o famoso recurso não encontrado.. A api está rodando mesmo no seu host na porta 8081 ? (Se bem que se está repondendo 404 está no ar). Se for a primeira vez que está rodando a api localmente, antes de tentar o login, faça uma requisição (pelo browser mesmo) para o endereço http://localhost:8081/gera/dados. Assim já serão gerados os dados inicias da app, inclusive os usuários. Quando a api não encontra o usuário que está tentando login um 404 é retornado.

Você já tentou usar o endereço da api rodando na nuvem ? https://instalura-api.herokuapp.com/api/public/login

Testei por aqui e ele está atendendo normalmente. Caso persista o problema, comente aqui. Abraço!