如何在 api 调用中使用异步等待获取在反应本机中通过基本身份验证

Posted

技术标签:

【中文标题】如何在 api 调用中使用异步等待获取在反应本机中通过基本身份验证【英文标题】:how to pass basic authentication in api call in react native using asynch await fetch 【发布时间】:2020-05-29 23:01:53 【问题描述】:

我想在 react native.how to pass basic authentication headers.getting error - unhandled promise rejection - cant find base64 variable

中调用基本身份验证 rest api
  getDataFromAPI=async()=>


  var headers = new Headers();
  headers.append("Authorization", "Basic " + base64.encode("admin:admin@123"));
  const endpoint='url'
  const res=await fetch (endpoint,headers:headers)
  const data=await res.json()
  this.setState(items:data)

  _renderItem=(item,index)=>
    letcardText,card,cardImage= styles
return  (
  <TouchableOpacity style=card>
          <Text style=cardText>item.id Reactor Status:  item.ph</Text>
  </TouchableOpacity>
)

【问题讨论】:

这能回答你的问题吗? Basic authentication with fetch? fetch 采用第二个参数,以便您可以传递自定义标头 你的错误究竟是什么,或者除了你已经取得的成就之外,你还想要什么? 出现错误 - 可能未处理的承诺拒绝 - 找不到变量 base64 它说 base64 不被拒绝,你是在某个地方定义它,也许它是一个包? @GauravRoy 【参考方案1】:

已安装 npm i -S base-64 并进口 从“base-64”导入解码为 atob,编码为 btoa

我从反应原生代码中的基本身份验证 rest api 得到响应

getDataFromAPI=async()=>


  var headers = new Headers();
  headers.append("Authorization", "Basic " + btoa("admin:admin@123"));
  const endpoint='url'
  const res=await fetch (endpoint,headers:headers)
  const data=await res.json()
  this.setState(items:data)

【讨论】:

【参考方案2】:

首先,这取决于您在服务器端使用的身份验证方法,但对于上面的代码,您可以在下面尝试

    fetch("https://www.majhgaon.com/app/supplier/add_report", 
            method: "POST",
            headers: 
              'Accept': 'application/json',
              "key-name": "kay-value",
            ,
          body: JSON.stringify(
                  ....
               ) 
          )

【讨论】:

以上是关于如何在 api 调用中使用异步等待获取在反应本机中通过基本身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在本机反应中从 json 获取数据?

在本机反应中获取返回旧数据的 API

从异步函数渲染反应本机孩子

如何在异步函数中处理多个等待

在反应中使用异步等待从firebase存储中检索图像

如何在本机反应中处理异步函数响应并保存在useState中?