2011-11-01 68 views
2

我有一个应用程序连接到一个IP摄像头,并执行HTTP请求获取图像和M-JPEG。现在没关系,因为我在开发室里有相机。但在几周内,摄像头将停产(它们非常昂贵),所以我不会让它们用于测试和调试我的应用程序。用于测试目的的假http服务器

我想知道的是什么是“模拟”这些凸轮的最佳方式?目前,我的应用程序使用2个摄像头,假设它们位于http://192.168.88.1http://192.168.88.2之间。我已经想到这一点:

  1. 在我的应用程序,我可以封装了做 HTTP调用的类 释放和假在调试时,当能做到真正的HTTP请求的功能。这不利的一面是,它会 不像偶尔超时和网络 流量再现真实的东西。
  2. 也许有一个网络摄像头模拟器的某个地方,我可以把我的 网络和使用?
  3. 也许创建真正的http请求到一个真正的服务器,我将 编程为返回假图片?如果是这样,如何继续?

就像你看到的,我有想法,但我不确定什么是最好的,什么人在那里做。考虑到你的答案,考虑到我可能会在相机不在时使用它进行单元测试以及正常调试。

谢谢!

+0

由用户使用的建议,我终于在我和HTTP处理程序(ashx的).NET解决方案创建了一个网站。它工作得很好! –

回答

2

广告。 1:在单元测试时这是一个很好的方法 - 你的代码不应该依赖于外部服务器/设备/文件系统。但是你已经看到这个环境可能太理想化了。不过,我的目标是将HTTP基础架构代码进行外部化 - 这将改善您的测试功能和整体架构。

Ad。 2:从来没有听说过,对不起。

Ad。 3:我认为这是最可行的解决方案。如果你曾经使用过servlet,那么只需抓住Tomcat或Jetty编写一个。然后根据localhost:8080/war_name/servlet_name连接到您的servlet并从它返回任何你想要的。 Here是一个简单的例子。

如果您从未听说过有关Java servlet和servlet容器的信息,那么了解它们仍值得一试。但启动内置于Sun JDK的HTTP服务器可能会更快,请参阅HttpServer API和example

+0

感谢您的好帖子。 –

1

如果您想要真实图像并访问网络摄像头,您可以在您的解决方案中创建一个ASP.Net网络服务,根据请求从网络摄像头拍摄照片。 当您处于调试模式时,配置您的解决方案以启动asp.net developpement服务器上的webservice,因此您不必配置“真实”web服务器

以下是代码的链接快照从C# 这是对的WinForms,但它应该是适应于Web服务 http://sites.google.com/site/webcamlibrarydotnet/winfrom-and-csharp-sample-code-and-download

+0

非常好的主意。我想我会将这个想法与Tomasz给出的一般性解释混合在一起来创建我的解决方案。谢谢 –

1

我建议创建一个使用Sinatra一个简单的测试工具。 Sinatra使用非常简单,可以将这种基本的网络应用程序剔除出去。

例如,下面是一个使用末日编写一个真正的程序:

require 'sinatra' 

get '/hi' do 
    "Hello World!" 
end 

这将运行一个简单的Web侦听器,如果你打的URI /hi将响应Hello World!

Sinatra是一款基于Ruby的应用程序,如果您了解Ruby,最好。如果您没有或者对另一种语言有强烈的偏好,Sinatra's Wikipedia page列出了25种以类似其他语言编写的类似应用程序,因此可能会有一个选项可供您使用。

0

使用Python构建的HTTP服务器

# sudo python -m http.server 80 
Serving HTTP on 0.0.0.0 port 80 ... 
123.123.12.1 - - [12/Feb/2018 11:34:02] "GET/HTTP/1.1" 200 -