---
title: 开发过程中，一种简单的方法来测试 HTTP 请求
date: 2021-01-20
categories:
  - development
  - json
  - xml
tags:
  - debugging
  - http-testing
  - json
  - web-services
  - xml
  - xml-editor
  - xmlspy
description: 使用 XMLSpy，您可以轻松调试各种Web服务，并进行更多操作。它能方便地测试HTTP请求，从而帮助您调试API、Web服务、网站等。
---
Status: #blog

Tags:  #debugging #http-testing #json #web-services #xml #xml-editor #xmlspy

Categories: [development](/blog/zh/category/development.md) | [json](/blog/zh/category/json.md) | [xml](/blog/zh/category/xml.md)
# 开发过程中，一种简单的方法来测试 HTTP 请求

Web 和 Web 服务开发者经常需要发送 HTTP 请求，无论是为了测试 API、测试 REST 和 SOAP Web 服务，还是管理网站。

[XMLSpy](https://www.altova.com/zh/xmlspy-xml-editor/) 通过其 HTTP 窗口和 WADL/WSDL 导入向导，可以在 XML 和 [JSON 编辑器](https://www.altova.com/zh/xmlspy-xml-editor/json_editor)中轻松发送和接收 HTTP 请求，这是一款非常实用的工具，可以节省大量时间，尤其是在调试 Web 服务时。

![Web服务器 - 测试HTTP请求](/blog/images/shutterstock_259245062.jpg)

<!--more-->

**测试 HTTP 请求**

HTTP协议定义了文件（如文本、图像等）如何在互联网上传输。每个Web服务器都运行一个程序（称为守护进程），该程序会持续等待HTTP请求，并在收到请求时进行处理。

例如，当您访问一个网站的主页时，您的浏览器会向该网站的服务器发送一个HTTP命令，请求下载主页；服务器上的HTTP守护进程接收到这个请求，并发送请求的页面。需要注意的是，HTTP协议是无状态的，这意味着每个HTTP命令都是独立执行的，不依赖于之前的或之后的命令——这可能会给测试和调试带来挑战。

为了帮助开发者完成这项工作，XMLSpy 中的 [HTTP 测试窗口](https://www.altova.com/zh/xmlspy-xml-editor/advanced#http-window) 会引导您完成创建和发送 HTTP 请求到 Web 服务器的整个过程。然后，您可以接收、检查和排查响应。

![测试 HTTP 请求](/blog/images/http-testing-window.png)

在窗口的左侧面板中，会定义一个请求，该请求可能包含以下内容：

- 请求的 HTTP 方法（例如 GET、PUT、POST 等）以及目标 URL
- 请求的 HTTP 头部信息
- 连接设置，例如超时设置和安全选项
- 对于 POST 和 PUT 方法，HTTP 消息体是：

HTTP窗口包含九个独立的标签页，您可以利用这些标签页来存储和测试多个消息，并在需要时在它们之间进行切换。

当请求定义完成后，点击“发送”按钮，将请求发送到Web服务器。您可以在右侧面板中立即分析响应结果，该面板会显示响应内容（如上所示）以及头部信息

![HTTP 头部响应](/blog/images/http-header-response.png)

**导入 WADL 或 WSDL 请求**

您还可以通过导入一个 [WADL](https://www.w3.org/Submission/wadl/) (Web Application Description Language) 文件来启动测试。该文件提供了一种机器可读的、关于基于 HTTP 的应用程序的描述，或者导入一个 [WSDL](https://www.w3.org/TR/2001/NOTE-wsdl-20010315) 文档，该文档描述了 SOAP Web 服务的端点。

XMLSpy 的 HTTP 窗口包含一个 WADL/WSDL 导入向导，它会引导您完成以下步骤：打开文件、选择用于测试的请求，以及修改请求中任何可编辑的参数。

然后，它会将请求导入到 HTTP 窗口，这样您就可以发送请求并查看响应。

![ 测试 WADL 请求](/blog/images/test-wadl-request.png)

**调试 REST API**

让我们来看一个实际例子，利用 HTTP 窗口来测试来自 Web API 的响应。芝加哥市政府数据门户 ([City of Chicago Data Portal](https://data.cityofchicago.org/)) 是一个公开的 REST API，它提供了关于各种有趣的数据，例如建筑许可证、市政府预算，以及该市哮喘住院人数等。

在这个例子中，我们将深入研究“交通”类别，并重点关注一个关于“闯红灯”违规行为的数据集。我可以在HTTP窗口中输入网址，以获取整个数据集。在请求末尾添加“.xml”或“.json”可以指定返回数据的格式。这次我选择了XML格式，但当然，XMLSpy内置了处理这两种格式的工具。您可以在下方看到HTTP窗口返回的结果。

![调试 API 请求](/blog/images/api-request.png)

我们可以在结果面板中查看数据，或者点击“创建新文档”来在 XMLSpy 中以文本或表格视图打开该文档。这样可以更方便地浏览和检查 API 返回的数据。

![网格视图中的 HTTP 响应](/blog/images/grid-view.png)

有了存储在文件中的数据，我们还可以进一步利用[XQuery](https://www.altova.com/zh/xmlspy-xml-editor/xquery-editor)进行更精确的分析。 让我们来看看那些出现超过20次违规行为的摄像头位置。

![使用 XQuery 查询 API 数据](/blog/images/xquery-api-data.png)

现在，我们再次获取数据，但这次以 JSON 格式获取。

这里以文本视图打开

![HTTP 响应，以 JSON 格式](/blog/images/http-response-json.png)

您还可以[在 XMLSpy 的独特 JSON 网格视图中查看 JSON 数据](https://www.altova.com/zh/xmlspy-xml-editor/json_viewer)，以获得图形化的呈现方式。JSON 网格视图可以大大简化数据的浏览和理解，尤其是在处理大型数据集时。此外，JSON 编辑器还内置了使用 XQuery 进行数据过滤的功能，如下所示。我已对数据进行过滤，以显示包含 Halsted 街的记录。

![使用 XQuery 过滤 JSON 数据](/blog/images/json-xquery-filter.png)

HTTP 窗口，以及内置的查看和编辑工具，使得 XMLSpy 成为一个非常棒的工具，可用于测试和调试 API、Web 服务以及其他 HTTP 应用程序。

下载 XMLSpy 的 [免费试用版](https://www.altova.com/zh/xmlspy-xml-editor/download)，体验 HTTP 窗口功能。
