首页 文章

从Android模拟器访问localhost:port

提问于
浏览
179

我正在运行 localhost:54722 的本地计算机上运行Web服务 .

我想从Android模拟器中运行的应用程序调用该服务 .

我读到在应用程序中使用 10.0.2.2 将访问localhost,但它似乎也不适用于端口号 . 它说 HttpResponseException: Bad Request .

19 回答

  • 13

    您可以使用IP地址“ 10.0.2.2 ”访问主机 .

    这是由Android团队以这种方式设计的 . 因此,您的网络服务器可以在localhost上完美运行,您可以通过“ http://10.0.2.2:<hostport> ”从Android应用程序访问它 .

  • 3

    使用10.0.2.2作为默认AVD,使用10.0.3.2作为Genymotion

  • 1

    如果您使用的是IIS Express,则可能需要绑定到所有主机名而不仅仅是“localhost” . 检查这个好答案:

    https://stackoverflow.com/a/15809698/383761

    告诉IIS Express本身绑定到所有IP地址和主机名 . 在.config文件中(通常是%userprofile%\ My Documents \ IISExpress \ config \ applicationhost.config或$(solutionDir).vs \ config \ applicationhost.config for Visual Studio 2015),找到您网站的绑定元素,然后添加< binding protocol =“http”bindingInformation =“:8080:”/>

    确保将其添加为第二个绑定而不是修改现有绑定,否则VS将重新添加一个附加了_2617012的新站点 . 此外,您可能需要以管理员身份运行VS.

  • 1

    我在Visual Studio Professional 2015中安装了“Conveyor by Keyoti”解决了这个问题 . 传送带生成一个REMOTE地址(您的IP),其端口(45455)启用了外部请求 . 例:

    enter image description here

    Conveyor允许您从网络上的外部平板电脑和手机或Android模拟器测试Web应用程序(无需 http://10.0.2.2:<hostport>

    步骤如下:

    https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

  • 8

    我在Visual Studio上执行IIS Express上的Web应用程序时面临同样的问题 . 要解决此问题,您需要转到项目属性,然后单击Debug选项卡并将[http://localhost:YOUR PORT]更改为[http://127.0.0.1:YOUR PORT]并将android url设置为[http://10.0.2.2:YOUR PORT] . 它对我有用 .

  • 3

    我有一个在我的localhost上运行的网络服务器 .

    如果我打开模拟器并想连接到我的localhost,我正在使用 192.168.x.x . 这意味着您应该使用本地lan IP地址 . 顺便说一句,你的 HttpResponseException (Bad Request) 并不意味着主机无法访问 .

    其他一些错误会导致此异常 .

  • 6

    问题是Android模拟器将 10.0.2.2 映射到 127.0.0.1notlocalhost . 因此,请将您的Web服务器配置为serveron 127.0.0.1:54722 而不是 localhost:54722 . 应该这样做 .

  • 0

    你需要将URL设置为 10.0.2.2:portNr

    portNr = ASP.NET Development Server给定的端口我的当前服务正在 localhost:3229/Service.svc 上运行

    所以我的网址是 10.0.2.2:3229

    我这样解决了我的问题

    我希望它有帮助......

  • 50

    "BadRequest"是一个错误,通常由服务器本身发送,请参阅rfc 2616

    10.4.1 400错误请求由于语法格式错误,服务器无法理解请求 . 客户端不应该在没有修改的情况下重复请求 .

    因此,您与服务器 Build 了有效连接,但您的请求不符合excet表单 . 我不知道你是如何创建连接的,包括哪些 Headers (如果有的话) - 但那就是你要检查的内容 .

    如果您需要更多帮助,请说明您的代码是什么以及它用于连接服务器的用途,因此我们可以了解情况 .

    Here是一个具有相同问题的问题 - 答案是内容类型未在 Headers 中设置 .

  • 0

    我想向您展示我从Android模拟器访问IISExpress Web API的方式 . 我正在使用Visual Studio 2015.我从Android Studio调用Android模拟器 .

    我需要做的就是将以下行添加到 applicationhost.config 文件中的绑定配置中

    <binding protocol="http" bindingInformation="*:<your-port>:" />
    

    然后我检查并使用IP4地址从Android模拟器访问我的API

    要求:必须以管理员身份运行Visual Studio . This post给出了完美的方法 .

    有关更多详细信息,请访问github上的my post

    希望这可以帮助 .

  • 1

    对于Laravel Homestead用户:如果有人使用Laravel和宅基地,你可以在模拟器中使用192.168.10.10访问app后端

    还是行不通?另一个好的解决方案是使用ngrok https://ngrok.com/

  • -3

    运行本地主机后,您会收到 http://localhost:[port number]/ ,您找到了您的端口号 .

    然后从Command获取您的IP地址,打开您的Windows命令并输入 ipconfig
    enter image description here

    就我而言,IP是 192.168.10.33 所以我的URL将是[http://192.168.10.33:port数字] / . 在Android中,工作室使用此URL作为您的URL . 之后,在模拟器的手动代理中设置您的URL和端口号 .

    enter image description here

  • 0

    localhost似乎在我的模拟器中工作正常,然后我开始得到连接拒绝异常我从模拟器浏览器使用127.0.2.2它工作,当我在我的Android应用程序中使用它在模拟器中它再次开始显示连接被拒绝的问题 .

    然后我做了ifconfig,我使用了ip 192.168.2.2,它运行得很好

  • 0

    错误请求通常意味着您发送的数据格式不正确 . 可能是数据映射不匹配 . 如果您收到错误请求意味着您可以连接到服务器,但请求未正确发送 .

  • 9

    如果有人还在寻找这个,这就是它对我有用的方式 .

    您需要找到与您连接的设备/仿真器相关的机器IP . 对于仿真器来说,通过以下步骤;

    • 转到VM虚拟框 - >在列表中选择已连接的设备 .

    • 选择设置 - >网络 - >找出设备所连接的网络 . 对我来说这是'VirtualBox Host-Only Ethernet Adapter #2' .

    • 在virtualbox中,转到文件 - >首选项 - >网络 - >仅主机网络,找出上述步骤中指定的网络的IPv4 . (通过悬停你会得到信息)

    提供此IP以从模拟器访问localhost . 端口与运行/发布服务时提供的端口相同 .

    Note #1 : 确保您已经处理好防火墙和入站规则 .

    Note #2 : 重新启动机器后,请检查此IP . 出于某种原因,即使我提供"Use the following IP"主机专用IP也发生了变化 .

  • 341

    当服务层使用Visual Studio IIS Express时,我解决了问题 . 只是指向10.0.2.2:port不会工作 . 我没有像其他帖子所提到的那样弄乱IIS Express,而是在IIS Express前放置代理 . 例如,apache或nginx . nginx.conf看起来像

    # Mobile API
     server { 
        listen       8090;
        server_name  default_server;
    
        location / {
            proxy_pass http://localhost:54722;
        }
      }
    

    然后android需要指向我的IP地址为192.168.x.x:8090

  • 9

    如果您正在使用某些第三方软件包(如node express或angular-cli),则需要找到计算机的IP,并将主机连接到服务器启动配置(而不是localhost)中的IP . 然后使用IP从模拟器启动它 . 例如,我不得不使用: ng serve -H 10.149.212.104 来使用angular-cli . 然后从我使用的模拟器: http://10.149.212.104:4200

  • 0

    1)在cmd中运行ipconfig命令

    2)你会得到这样的结果
    enter image description here

    3)然后使用VMWare网络适配器1的IPv4地址,然后使用端口号

    在我的情况下它的8080,所以而不是使用localhost:8080

    我使用的是192.168.56.1:8080

    enter image description here

    做.....

  • 0

    在网址中提供具有互联网的系统的IP地址 . 例如:190.168.1.90它对我有用

相关问题