4

我正在编写一个针对 RESTful api 的 phonegap 应用程序。出于调试目的,我想看看我的 POST 和 GET 是什么样的。谷歌上的所有信息都说使用提琴手代理。我安装了 fiddler 并开始工作,设置了我的 android 模拟器以使用它,但是每当我开始查询 restful 服务时,数据包就会以某种方式被破坏(或者至少是它的授权部分)。

如果我没有代理,以下 JS 代码在我的 android 模拟器中可以正常工作:

$.post("https://blah.hi.com/homepage/security_check",
     $("#loginForm").serialize(), function (data, textStatus, jqXHR) {...

但是当我让提琴手去,以便我可以分析我的 android 应用程序发出的请求时,我收到以下错误:

在此处输入图像描述

据我通过检查提琴手中的初始请求可以看出,进行了以下更改:

User-Agent、Connection 和 Host 标头被剥离。我尝试使用 Fiddler 规则手动添加它们,但这不起作用。

这是一个很好的比较:

在此处输入图像描述

此外,当我查看请求的 TextView 选项卡时,Extensions 下的以下标题被剥离(以下是使用 Chrome 时请求的样子,并通过 fiddler 并正常工作):

在此处输入图像描述

现在这是通过 eclipse android 模拟器,通过 fiddler 并失败时的情况: 在此处输入图像描述

我考虑过使用 WireShark,但所有通信都是通过 https 完成的,并且更喜欢使用 fiddler。

任何建议将不胜感激!!另外,我通过使用以下参数 -http-proxy 127.0.0.1:8888 从这里http://vkosinets.com/blog/2011/08/16/debug-http-requests-from-android-emulator进入代理

编辑:这是使用 Android 4.X 模拟器时的一些调试信息(也失败了)。 在此处输入图像描述

4

1 回答 1

1

这很可能是针对旧的 Android SDK/Emulator 版本报告的问题:

问题 12356:通过代理的 https 连接丢失标头

还值得检查相关问题中缺少的标题讨论:

问题 3334:未通过 Wi-Fi 连接时,SSL 网站无法在浏览器应用程序中加载

根据这篇文章,这个问题似乎只存在于 Android 3.x 及更低版本:

此问题仅发生在 Android 3.x 及更低版本上。iOS 没问题。所有主要的桌面浏览器都很好。Android 4.x 很好。

尝试使用 Android 4.x 模拟器,看看是否可行。

更新:

除了在某些情况下不清楚的错误之外,这可能是一个具有挑战性的配置。查看在 Android 模拟器中设置持久可信 CA

在 Android 模拟器中设置持久可信 CA 是一个常见问题,每当我们在模拟器中评估应用程序时都会遇到正确使用 SSL 的问题。目标是来自运行在 Android 模拟器中的应用程序的中间人 (MITM) 流量。

为了成功进行 MITM 流量,中间节点的证书颁发机构 (CA) 必须受到设备的信任,否则连接将失败并出现一些通用的 SSL 握手错误。通常,可以通过修改 cacerts 文件并重新启动设备,将中间节​​点标记为在根电话上受信任。当尝试在 Android 模拟器中执行此操作时,重新启动虚拟设备会导致操作系统将许多系统文件恢复到其基本状态——包括 cacerts 文件。这篇文章的其余部分描述了如何设置一个模拟器,在重启后保留对核心系统文件的修改。这还没有记录在一个地方(据我所知),所以希望这将为那些面临这个问题的人节省时间。

……

于 2013-02-04T01:55:30.577 回答