API pots [объектный объект] в реагировать на натив - PullRequest
0 голосов
/ 14 апреля 2020

У меня была проблема с отправкой данных на сервер. когда я пытаюсь отправить данные через почтальона успешно с ответом ниже, и если я активирую 'Content-Type': 'application / json'

, у меня есть проблема, которая является JSON Ошибка разбора: нераспознанный токен '<' </p>

{
    "status": 200,
    "message": "success login",
    "id_kurir": "3",
    "username": "tester",
}

Когда я пытаюсь с кодом, я получаю ошибку, которая [объектный объект]

это мой код:

constructor(props) {
    super(props);
    this.state = {
      Uname : '',
      Upass : ''
    }
  }

  login= ()=>{
    const {Uname,Upass} = this.state;
    fetch('https://example.com/login', {
      method: 'POST',
      // headers: {
      //   'Accept' : 'application/json',
      //   'Content-Type': 'application/json'
      //},
              body: JSON.stringify({
              username: Uname,
              password: Upass
            })
      })
      .then((response) => response.json())
      .then((responseJson) => {
          alert(responseJson);
          console.log(JSON.stringify(responseJson));
        }).catch((error)=>{
          console.log(error);
        })
      Keyboard.dismiss();
  }



           <Form style={styles.mainForm}>
              <Item style={styles.formItems}>
                <Input placeholder="Username" style={styles.Input} onChangeText={Uname => this.setState({Uname})}/>
              </Item>
              <Item style={styles.formItems}>
              <Input style={styles.Input} secureTextEntry={true} onChangeText={(Upass) => this.setState({Upass})}/>
              </Item>

              <View style={styles.Button}>
                {/* <Button block style={styles.mainBtn} onPress={() => this.props.navigation.navigate('home')}> */}
                <Button block info style={styles.mainBtn} onPress={this.login}>
                  <Text style={styles.btnText}>Submit</Text>
                </Button>
              </View>
            </Form>

где находится неисправность?

1 Ответ

0 голосов
/ 14 апреля 2020

Сервер, вероятно, ошибка 404 или 500. Вместо ответа. json () используйте response.text (), вы получите html в тексте.

Я предполагаю, что ваш сервер не принимает JSON отформатированное тело

Попробуйте используя код ниже.

Вариант 1:

fetch('https://example.com/login', {
    method: 'POST',
    body: JSON.stringify({
        username: Uname,
        password: Upass
    })
}).then(response => response.text()).then((text) => {
  if (Platform.OS === 'android') {
    text = text.replace(/\r?\n/g, '').replace(/[\u0080-\uFFFF]/g, ''); 
    // If android, remove unwanted chars. 
  }
  return text;
}).then(response => JSON.parse(response));

Вариант 2:

fetch('https://example.com/login', {
    method: 'POST',
    body: JSON.stringify({
        username: Uname,
        password: Upass
    })
}).then((response) => response.text()).then((responseJson) => {
    alert(JSON.stringify(responseJson));
    console.log(JSON.stringify(responseJson));
}).catch((error) => {
    alert(JSON.stringify(error));
    console.log(error);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...