Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

API remota da alura com possíveis problemas

Olá bom dia! A API remota da alura usada no curso de react native parte 2 na aula 'Enviando dados de autenticação do usuário' com url: https://instalura-api.herokuapp.com/api/public/login que usa método POST com parametros dos inputs: {login:"rafael",senha:"123456"} após ser enviado deveria retornar um token como mostrado nesta aula, mas isso não acontece e aparece um warning: "Possible Unhandled Promise Rejection (id: 0); Error: Não foi possível efetuar o login". Vou passar meu código abaixo porém já informo que fiz mais testes na API com o postman onde tentei enviar via POST nesta mesma url com os mesmo dados de inputs e também não retornou o token E COM ISSO FICA MUITO CLARO QUE HÁ ALGO DE ERRADO COM A API. Peço a gentileza que testem a API e confirme se estou errado. Segue abaixo meu código:

import React, { Component } from 'react'
import { View, Dimensions, StyleSheet, TextInput, Button } from 'react-native'

const dimensions = Dimensions.get('screen');

export default class Login extends Component {


    efetuaLogin(){
        let uri = 'https://instalura-api.herokuapp.com/api/public/login'; 
        const requestInfo = {
            method:'POST',
            body:JSON.stringify({
               login:this.state.usuario,
               senha:this.state.senha 
            }),
            header: new Headers({
                'Content-Type':'application/json'
            })
        }
        fetch(uri,requestInfo).then(r1=>{ //console.log(r1);
            if(r1.ok) return r1.text();
            throw new Error("Não foi possível efetuar o login.");
        }).then(r2=>console.warn(r2));
    }

    render() {
        return (
            <View>
                <View style={styles.form}>
                    <TextInput style={styles.input} placeholder="Usuário..." 
                    onChangeText={texto=>this.setState({usuario:texto})} autoCapitalize="none" /> 
                    <TextInput style={styles.input} placeholder="Senha..." 
                    onChangeText={texto=>this.setState({senha:texto})} secureTextEntry={true} /> 
                    <Button title="Login" onPress={this.efetuaLogin.bind(this)} 
                    color='darkgreen' />
                </View>
            </View>
        );
    }
}

const styles = StyleSheet.create({
   form:{
    width:dimensions.width * 0.8,
   },
   input:{
    height:40,
    borderBottomWidth: 1,
    borderBottomColor:'#ddd'
   }
  });
1 resposta
solução!

Consegui achar o problema:Ao invés de header: new Headers({... Era pra ser headers: new Headers({...