用于创建和发送HTTP消息的调试工具(例如Curl)

时间:2011-06-22 09:35:41

标签: java http curl

我正在开发一个使用HTTP与服务器通信的软件(但它不是Web浏览器)。由于服务器部分尚未就绪,我想通过向其发送HTTP消息来调试我的客户端软件。我知道我可以使用Curl发送HTTP请求。但我不确定这是否足够。

我正在想象一个环境,我从我的应用程序发送请求,使用Wireshark检查它是否正确,然后使用某些软件回复请求。使用Curl,我想我会打开一个监听端口..?

3 个答案:

答案 0 :(得分:1)

你不能用cURL做到这一点。它是一个http 客户端,而不是服务器。

最简单的方法是实际实现一个模拟服务器应用程序,每次只返回一个静态(即硬编码)消息。您可以使用您喜欢的任何服务器端语言(php,python,ruby,...)来执行此操作,或者,您甚至可以在没有服务器端语言的情况下执行此操作,只使用由web服务器(如apache或nginx)提供的静态文件

例如,如果服务器部分(API)将使用相关内容(包含某些文章的JSON对象)响应/articles.json,则可以放置一个名为articles.json的文件,其中包含一些手 - 在服务器的根目录中写入数据。然后,当您的应用程序实际上只是下载静态文件时,它会认为它正在调用API。

答案 1 :(得分:1)

我会使用一个简单的node.js服务器。您可以在几行代码中编写自己的HTTP服务器,轻松模拟各种返回码,响应头或响应实体:http://nodejs.org/

PS:有些代理只打印出HTTP消息。这也可能对您有所帮助,因为您不再需要处理WireShark仅用于HTTP级别的日志记录。

答案 2 :(得分:0)

您可以使用firefox浏览器的firebug插件来查看HTTP请求/响应的内容。 它不需要任何服务器(当然,如果你没有服务器处理来自浏览器的请求并向浏览器发送响应,你将总是看到响应“无法连接”)。

如果你仍然需要模拟响应,你可以创建一个简单的服务器,它能够响应模拟响应,例如tomcat服务器上的java servlet,代码如下:

public class MyMockServlet extends HttpServlet {
..
private String mockHeaders = "...";
private String mockResponse = "my response";
 public void service(HttpRequest request, HttpResponse response){
    setHeaderAndBodyInResponse(response);//your method
 }
}