axios post请求中的网络错误本地响应

时间:2017-09-19 18:57:42

标签: react-native axios

这是我通过axios post request检查Auth的方法

CheckAuth() {
    let obj = {
                username: 'axy@gmail.com',
                password: 'zzxxz'
            }
    //oauth_credentials imported 

    let form_data = Object.assign(obj, oauth_credentials)

    axios({
           method: 'post',
           url: routes.oauth_token,
           headers: {
             'Content-Type': 'application/x-www-form-urlencoded',
             'Accept': 'application/json',
           },
           data: form_data
         })
            .then(res => {
                console.log(res)
            })
            .catch(err => {
                console.log(err)
            })
   }

我想发送post请求以获取令牌,但是当我尝试时,它在控制台中显示网络错误

Error: Network Error
    at createError (createError.js:16)
    at XMLHttpRequest.handleError (xhr.js:87)
    at XMLHttpRequest.dispatchEvent (event-target.js:172)
    at XMLHttpRequest.setReadyState (XMLHttpRequest.js:546)
    at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:381)
    at XMLHttpRequest.js:485
    at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
    at MessageQueue.__callFunction (MessageQueue.js:306)
    at MessageQueue.js:108
    at MessageQueue.__guard (MessageQueue.js:269)

7 个答案:

答案 0 :(得分:2)

如果您在Android 9上遇到此错误,则解决方法是在android:usesCleartextTraffic="true"中添加AndroidManifest.xml

  

明文是任何未加密或打算加密的传输或存储的信息。

在使用http而不是https时,Android Pie将阻止您的请求,因为默认情况下,Android Pie中不允许明文通信。

答案 1 :(得分:1)

尝试使用emulator -avd your_avd_name -dns-server 8.8.8.8运行模拟器 我的意思是确保您的仿真器具有互联网连接。

答案 2 :(得分:0)

您正在生成预检请求,因为标题中的content-typeapplication/x-www-form-urlencoded文档https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

预检请求首先通过OPTIONS方法向另一个域上的资源发送HTTP请求,以确定实际请求是否可以安全发送。跨站点请求是这样预检的,因为它们可能会对用户数据产生影响。

您必须确保服务器可以管理OPTIONS请求以使其正常工作。或将其从您的请求中删除

答案 3 :(得分:0)

   async getToken(username, password) {
    //request server for token
    try {
        let credential = {
            username: Constant.CLIENT_ID,
            password: Constant.CLIENT_SECRET
        };
        //QueryString is a package
        let data = QueryString.stringify({
            username: username,
            password: password,
            grant_type: 'password'
        });

        //for ios url should be https and for android http
        const requestURL = 'url';
        const response = await axios.post(requestURL, data, {
            auth: credential,
        });
        console.log(response.data);

    } catch (error) {
        if (error.response.status === 401) {

        } else {

        }
    }
}

答案 4 :(得分:0)

尝试更改adb端口。写这个命令

adb reverse tcp:8880 tcp:8880; adb reverse tcp:8081 tcp:8081; adb reverse tcp:8881 tcp:8881

答案 5 :(得分:-2)

你进入我的命令提示符 (CMD) 或终端,然后输入 ipconfig 它显示我机器的 IP 地址

答案 6 :(得分:-3)

在您的网址中添加http://。如果在本地主机上,请使用系统IP。