gpt4 book ai didi

Android 模拟器未使用 https 连接到本地托管的网络服务

转载 作者:太空狗 更新时间:2023-10-29 12:53:38 25 4
gpt4 key购买 nike

我正在尝试使用 https 安全连接调用本地网络上托管的 Web 服务,首先它给出了异常 HostNameUnresolved ,所以我使用了 ip 地址而不是名称,现在我收到以下错误:

Error in geting tags.=javax.net.ssl.SSLException: hostname in certificate didn't match: <10.100.248.99> !=

我已经将中间证书和根证书添加到 android 信任列表中。

谁能给我一个使用主机名而不是 IP 地址访问本地网络上安全托管的 Web 服务的解决方案?

最佳答案

正如其他人所提到的,您需要一些东西才能连接您的网络服务:
- 模拟器知道你需要连接到的服务器的 IP 地址是什么
- 您通过 HTTPS 连接的服务器名称 URL 必须解析为 SSL 证书的域

为此,您需要:

  • 挂载你的模拟器分区可写

从您的桌面 shell(以 linux 为例,但在 windows 上类似,并假设 Android sdk 安装在 /android-sdk 上):

cd /android-sdk/tools/
./emulator -avd NexusS -partition-size 128

其中 NexusS 是您设备的 AVD 名称。您必须从命令行启动模拟器,否则您将在后续步骤中遇到错误。

现在打开另一个 shell 终端并获取您的模拟器/system/etc/hosts 文件:

cd /android-sdk/platform-tools
./adb remount
./adb pull /system/etc/hosts /tmp/

remount 是设置分区可写。上面的 pull 命令将主机文件复制到桌面的 /tmp/hosts
从桌面编辑/tmp/hosts 文件以满足您的需要,即如果 Web 服务是 https://www.example.com/foo IP 是 192.168.1.10:

127.0.0.1      locahost
192.168.1.10 www.example.com

然后将其推回模拟器:

cd /android-sdk/platform-tools
./adb push /tmp/hosts /system/etc/

您现在应该能够连接到网络服务。

请注意,如果是自签名证书,您仍然可能会出错。

下图是编辑hosts文件之前的图片:
IP doesn't match the certificate

编辑后:
Server name match

关于Android 模拟器未使用 https 连接到本地托管的网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9212463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com