Android如何为离线演示模拟HTTP通信

时间:2011-06-04 01:04:37

标签: android http

我有一个Android应用程序,几乎每个操作都使用http通信。我想通过某种方式重播http交换,能够在没有连接到互联网的情况下进行演示。如何才能做到这一点?所以我想以某种方式几乎像模拟对象,但真的模拟http会话,所以我总是可以在线或离线演示应用程序。这真的是一件非常酷的事情。因为您可以轻松可靠地演示应用程序。有谁知道我怎么能做到这一点。复制整个服务器端只是不是一个选项,它有太多的东西。重要的是不要只显示截屏视频而是真正的数据交换。我只是希望能够通过应用程序运行并重播。也许调试。感谢

7 个答案:

答案 0 :(得分:5)

这是一个使用其他答案的类似想法的混合解决方案:

您可以编写一个简单的HTTP服务器来侦听“localhost:80”(或者您要定位的服务器上的任何端口),并将您的应用程序指向此主机,而不是通过从请求中分解出主机名。您的本地服务器具有对实际远程服务器的引用,并执行以下操作:

  • 如果是ONLINE,请将请求按原样转发给真实服务器,获取响应,将其本地保存在由请求URL键入的内存缓存中,或者以URL作为其标识符命名的文件(适当地引导)
  • 如果OFFLINE,在其(内存或文件系统)缓存中查找请求,并从缓存中返回内容

这有点像@ nicholas.hauschild所说的录制/播放模式。

现在,您可以在ONLINE时运行一次应用程序,从而使本地主机服务器保存它针对真实服务器发出的请求。然后,当你的应用程序脱机运行时,只要发出相同的URL,它就会返回这些缓存的内容。

希望这有帮助。

答案 1 :(得分:2)

答案 2 :(得分:1)

我会为我的应用创建“录制模式”和“播放模式”。

在记录模式下,每次发出http请求时我都会写出一个文件。该请求所在的端点将命名该文件。该文件的内容将是按行分解的序列化http请求/响应的集合。然后,您可以从此文件中反序列化行,直到找到正确的请求,然后播放反序列化的响应。

此方法还允许您创建录制/播放配置文件,您可以在其中录制多个不同的会话(通过将文件放入不同的目录),然后从您选择的任何配置文件进行播放。

这整个方法可以使用您正在使用的HttpClient对象周围的小包装类来完成。

答案 3 :(得分:1)

一种方法是使用HTTP代理。将所有Web流量重定向到代理,该代理可以在手机上本地运行。这可以在很少或没有源代码更改的情况下完成。

答案 4 :(得分:1)

在PC上找到一种使用fiddler的方法,并且android app将fiddler作为代理。所以http流量是记录。 http://blog.csdn.net/grhunter/article/details/5830199

答案 5 :(得分:0)

你可以尝试一下这个问题中的一个答案。它不是完全相同的用例,但它们也可以解决您的问题。

Faking HTTP request responses for testing in Android

答案 6 :(得分:0)

简单的解决方案在于在没有连接时伪造它。如果连接出错,请确保您的应用程序抛出一些预设数据而不是连接错误。