使用标头中的令牌来响应本机Get请求

时间:2019-01-29 07:15:01

标签: react-native networking get http-headers

您好我试图复制IOS应用中发生反应-native.I想使与在报头令牌的认证的GET请求。但是低于错误: 发生异常:SyntaxError SyntaxError:JSON中位置0上的意外令牌<     解析()

我尝试了以下代码:

  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 :(得分:1)

首先我的URL出现问题,如果遇到任何问题,请先几次检查您的代码。

第二,我在响应的_bodyText部分中接收到我的数据对象。因此需要一个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: }

答案 1 :(得分:0)

您发送的请求与响应无关。它的工作正常。问题是您得到的响应可能不是JSON,因此javascript无法解析它。您可以使用诸如https://jsonplaceholder.typicode.com/users之类的虚拟api对其进行测试,以查看是否收到响应并正确解析了该响应。 参见以下代码。

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