当前位置: 首页 > 面试题库 >

Axios(在React-native中)不在本地主机中调用服务器

季骏祥
2023-03-14
问题内容

我正在构建一个非常简单的api和react-
native应用程序。服务器运行良好(已通过PostMan测试),但应用程序未调用服务器。它会在axios必须发送发布请求时阻止(请参见下文)。

我很绝望:-(松懈的时间。请,如果你能帮助我…

这是我的代码“登录”页面。它分派动作创建者(与redux一起使用)并提供电子邮件和密码:

...
const LogIn = React.createClass({
  submitLogin() {
    // log in the server
    if (this.props.email !== '' && this.props.psw !== '') {
      if (this.props.valid === true) {
        this.props.dispatch(logIn(this.props.email, this.props.psw));
      } else {
        this.props.dispatch(errorTyping());
      }
    }
  },
...

我们将检索电子邮件和密码并将其发送给操作创建者:

import axios from 'axios';
import { SIGNIN_URL, SIGNUP_URL } from '../api';
// import { addAlert } from './alerts';
exports.logIn = (email, password) => {
  return function (dispatch) {    
    console.log(email);
    console.log(password);
    console.log(SIGNIN_URL);
    return axios.post(SIGNIN_URL, { email, password })
    .then(
      (response) => {
        console.log(response);
        const { token, userId } = response.data;
        dispatch(authUser(userId));
      }
    )
    .catch(
      (error) => {
        console.log('Could not log in');
      }
    );
  };
};
const authUser = (userId) => {
 return {
 type: 'AUTH_USER',
 userId
 };
};
...

axios之前的三个console.log()以正确的方式显示数据。SIGNIN_URL与邮递员中使用的完全相同。…但是axios不会打电话。

只是给所有卡片,这是我的商店:

import thunk from 'redux-thunk';
import { createStore, compose, applyMiddleware } from 'redux';
import { AsyncStorage } from 'react-native';
import { persistStore, autoRehydrate } from 'redux-persist';
import reducer from '../reducer';
const defaultState = {};
exports.configureStore = (initialState = defaultState) => {
 const store = createStore(reducer, initialState, compose(
 applyMiddleware(thunk),
 autoRehydrate()
 ));
 persistStore(store, { storage: AsyncStorage });
 return store;
};

调试器中没有错误消息(但是axios调用给出了错误消息(“无法登录”)

我在Windows 10上,具有:

"axios": "^0.15.3",
"react": "15.4.2",
"react-native": "0.38.0",
"redux": "^3.6.0"

即使我准备了一个简单的GET调用,并且服务器应该返回一条简单的消息(使用邮递员和浏览器进行测试),该调用也会失败:

exports.test = () => {
  return function () {
    return axios.get('https://localhost:3000/v1/test')
    .then(
      (response) => {
        console.log(response);
      }
    )
    .catch(
      (error) => {
        console.log('error');
      }
    );
  };
};

最后,我也尝试修改调用以添加标头,如下所示,因为api编码为接受json:

const head = {
  headers: { 'Content-Type': 'application/json' }
};

exports.test = () => {
  return function () {
    return axios.get('https://api.github.com/users/massimopibiri', head)
    .then(
      (response) => {
        console.log(response);
      }
    )
    .catch(
      (error) => {
        console.log('error');
      }
    );
  };
};

但即使这样也不起作用。希望有人可以帮助我。其他类似问题则没有。


问题答案:

解决方案来自不同的来源,但我将其发布在此处以帮助其他人寻找相同的问题。基本上,我使用Android
AVD(仿真器)来构建应用程序。但是模拟器实际上是另一台机器,这就是为什么它不能调用本地主机的原因。

为了解决这个问题,我必须通过以下方式发送请求:

https://10.0.2.2:3000/v1/test

代替:

https://localhost:3000/v1/test


 类似资料:
  • 当我在Eclipse中的服务器上运行我的应用程序时,我会得到这样的消息:“Tomcat V8.0服务器在localhost上所需的端口8080已经在使用中。该服务器可能已经在另一个进程中运行,或者某个系统进程正在使用该端口。要启动该服务器,您需要停止其他进程或更改端口号”。其他项目关闭。有人能帮我解决这个问题吗?我是爪哇初学者。

  • LocalHost显示空白页。我将Apache的端口更改为80,当我按下open page时,它会转到localhost/mamp。当我删除/mamp时,我得到的只是一个空白页。我尝试过多种方法,比如关闭mamp,启动它,重新启动我的机器。我已经检查了文件夹设置,一切正常。 我通过创建一个新的文件页索引来测试它。html,它打开的很好。 我不知道它为什么不打开我的索引。php文件。下面是我的php

  • 我正在尝试执行gmapsapi密钥的第一个示例https://developers.google.com/maps/documentation/javascript/tutorial?hl=es-419 在localhost的示例网站中,但地图没有加载。该API密钥是正确的,并与我的谷歌项目检查。

  • 问题内容: 我有一个应用程序,它使用获取来验证用户身份。直到几天前它一直在工作,我什么都没改变。刚刚从React 0.27升级到0.28,未获取无法正常工作。 我已经搜索了将近2天,并且我已经阅读了stackoverflow中几乎所有的问题。大多数尝试从localhost获取内容的用户,当他们将其更改为实际ip地址时,便可以使用它。但是我没有从本地主机获取任何东西,我的代码也一直在工作。 这是我的

  • 我创建了Spring启动应用程序。它在我的本地主机上成功运行。但当我在linux centos服务器中部署并运行jar文件时,找不到索引页(我得到:出现了一个意外错误(type=notfound,status=404)/WEB-INF/jsp/index。(jsp) 这是我的代码结构和应用程序。特性: 代码结构 这是我的pom。xml依赖项: