Реагировать на нативный запрос Get с токеном в заголовке - PullRequest
0 голосов
/ 29 января 2019

Привет! Я пытаюсь скопировать приложение ios в реагировать на нативный. Я пытаюсь сделать запрос get с токеном аутентификации в заголовке.Но получается ошибка ниже: Возникла исключительная ситуация: SyntaxError SyntaxError: Неожиданный токен <в JSON на позиции 0 в parse () </p>

Я пробовал следующий код:

  let webPath = 'http://some.domain..svc/GetContactDetails?UserEmail=5555';

        let request = {
          method: 'GET',
          headers: { 
            'Content-Type': 'application/json', 
            //'Authorization': 'Bearer ' + myToken, // won't works same error
            //'Token': myToken, // won't works same error
            'Authorization':{'Token':myToken}
          },
          //credentials: 'include',
        }

        fetch(webPath, request)
        .then((response) => response.json())
        .then((responseJson) => {

          console.log(responseJson)

        })
        .catch((error) => {
          console.error(error);
        });

В IOS я делаюиспользуя следующий код:

    var request = URLRequest(url: url)
    request.setValue("application/json", forHTTPHeaderField: "Accept")
    let token_key = UserDefaults.standard.value(forKey: "token_key") as! String
    request.setValue(token_key, forHTTPHeaderField: "Token")

    let task = URLSession.shared.dataTask(with: request) { (data, response, error) in

Любая помощь действительно будет признательна.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Сначала возникла проблема с моим URL-адресом. Если у вас возникнут какие-либо проблемы, сначала просмотрите код несколько раз.

Затем я получил свой объект данных в части _bodyText ответа.Поэтому нужен анализатор JSON для анализа моих данных в объектах json как JSON.parse (response._bodyText);Поэтому приведенный ниже код работает для меня.

let request = {
          method: "GET",
          headers: {
            'Content-Type': "application/json",
            'Token': mytoken
          }
        };

    fetch(webPath, request)
          .then(response => {
            return JSON.parse(response._bodyText);
          })
          .then(responseJson => {
            console.log(responseJson);
            const DataDict = responseJson; 
            console.log(DataDict);
            let Status = DataDict["Status"];
          })
          .catch(error => {
            console.error(error);
          });

Также с resopnse.json () я получаю ответ ниже:

Promise {
13:54:17:   "_40": 0,
13:54:17:   "_55": null,
13:54:17:   "_65": 0,
13:54:17:   "_72": null,
13:54:17: }
0 голосов
/ 29 января 2019

Отправляемый вами запрос не имеет ничего общего с ответом.Работает нормально.Проблема в том, что вы получаете ответ не JSON, вероятно, поэтому javascript не может его проанализировать.Вы можете проверить его с помощью какого-нибудь фиктивного API, например https://jsonplaceholder.typicode.com/users, чтобы увидеть, получаете ли вы ответ и правильно ли он анализируется.см. следующий код ..

function getMoviesFromApiAsync() {
  return fetch('https://facebook.github.io/react-native/movies.json')
    .then((response) => response.json())
    .then((responseJson) => {
      return responseJson.movies;
    })
    .catch((error) => {
      console.error(error);
    });
}

Это пример кода для извлечения данных с сервера в официальных документах React Native.https://facebook.github.io/react-native/docs/network

...