Трудно отправить данные с помощью метода PUT. получение нераспознанного токена '<' - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь внести изменения в свое приложение, и мне трудно и я получаю ошибку нераспознанным токеном. Я проверил мой API

. Буду признателен, если кто-нибудь сможет просмотреть sendData () и сообщить мне, если что-то выглядит не так.

'' '

handleSubmit = () => {
 const {screenProps: {auth: {logInUser}}, navigation: {navigate}} = this.props
 console.log("props:" + this.props)
 const user = {
 password: this.state.password,
 email: this.state.email,

}

if (requiredFields(['email', 'password'], ['Email Address', 'Password'], this.state)) {
  logInUser(user, navigate)

  sendData(this.user, this.state.password, this.state.email ).then(r => console.log(r) )

async function sendData(user,password, email) {
  try {

    const url = (my_api_url)

    const resp = await fetch(url, {
      method: 'PUT',
      headers: myHeaders(user),
      body: JSON.stringify({EmailAddress: email, Password: password}),
    })

    const results = await resp.json()
    this.setState({isFetching: false})

    if (results.errors) {
      throw new Error(result.Error)
    } else {
      console.log(result)
    }
  } catch (e) {
    Alert.alert(e.title, e.message)
  } finally {
 }
}

Ответы [ 2 ]

0 голосов
/ 02 ноября 2019

Всегда проверяйте код состояния ответа и тип содержимого, прежде чем пытаться десериализовать ответ, чтобы вы могли корректно обрабатывать ошибки и неожиданные ответы, а не получать необработанное исключение.

Попробуйте это:

async function sendData( user, password, email ) {
  try {

    const url = (my_api_url)

    const resp = await fetch( url, {
      method: 'PUT',
      headers: myHeaders(user),
      body: JSON.stringify( { EmailAddress: email, Password: password } ),
    } );

    if( resp.ok ) { // `resp.status >= 200 && resp.status < 299`

      if( resp.headers.get("Content-Type") == "application/json" ) {

        const j = await resp.json();
        this.setState({isFetching: false})
        gotJsonResponse( j );
        return;
      }
    }

    const body = await resp.text();
    this.setState({isFetching: false})

    // Gracefully handle non-Success or non-JSON responses here:

  } catch (e) {
    Alert.alert(e.title, e.message)
  } finally {
 }
}

function gotJsonResponse( responseBody ) {

  if (results.errors) {
    throw new Error(result.Error)
  } else {
    console.log(result)
  }
}
0 голосов
/ 02 ноября 2019

Эта строка:

const results = await resp.json()

Попытается преобразовать результат API в объект JavaScript. Полученная ошибка обычно является ошибкой, которую вы получите, если попытаетесь разобрать html в json. Поэтому я предполагаю, что ваш API не возвращает JSON, а представляет собой какую-то ошибку по умолчанию. (404 500, ...).

Чтобы убедиться в этом, вы можете распечатать ответ и проверить, какие данные возвращаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...