为什么Android上的Axios在400错误上不提供响应?

时间:2019-12-10 22:31:34

标签: javascript android reactjs react-native axios

我正在使用React Native和Axios,它们在iOS上运行完美,但不幸的是在Android上,Axios不会从服务器返回错误响应。

这是我的服务器响应作为原始数据。用代理检查它,它返回没有任何问题(并且也适用于iOS)

HTTP/1.1 400 Bad Request
Date: Tue, 10 Dec 2019 22:07:15 GMT
Server: Apache/2.4.29 (Ubuntu)
Cache-Control: no-cache, private
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 191
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, X-Requested-With, Authorization
Content-Length: 73
Connection: close
Content-Type: application/json

{"errors":{"email":["email registered before."]}}

这是我的_registerUser()函数,用于调用Web服务

    registerUser = (data) => {
        return axios({
            method: 'post',
            url: getEndpoint() + URLS.register,
            data: data,
            config: { headers: { 'Content-Type': 'multipart/form-data' } }
        })
    };

这是我称为registerUser和捕获错误的部分。在那部分上,error只是“网络错误”,并且没有按原样(以及在iOS上也不返回)返回response键。这可能是什么原因?

    registerUser(data)
            .then((response) => {
                console.log("HANDLE SUCCESSFUL REGISTER ERE");
            })
            .catch((error) => {
                console.log("HANDLE ERROR HERE");
                console.log("error object");
                console.log(error);
                console.log(JSON.stringify(error));
                console.log("error.response object");
                console.log(error.response);
                console.log("---------");
            });

非常感谢您的帮助...

我的问题的重要补充:我正在使用拦截器来捕获401错误,例如:可能相关吗? SELF ANSWER::移除拦截器并没有任何改变。

axios.interceptors.response.use(undefined,
    error => {
        if ((typeof error.response !== "undefined") && (typeof error.response.status !== "undefined") && error.response.status === 401) {
            console.log("INVALID API TOKEN DETECTED --- REDIRECTING TO LOGIN");

            // do some stuff here

        }
        return Promise.reject(error);
    }
);

0 个答案:

没有答案