【发布时间】:2019-01-23 15:07:13
【问题描述】:
我正在尝试访问具有使用 GET 动词的端点的 REST 服务器,同时它还需要在正文中发送 json 数据
我正在尝试使用 Get 方法通过 TIdHttp 类来实现。
现在我用 json 数据创建一个 TStringStream,然后将该流分配给 TIdHttp 对象的 Request.Source 属性。
但是,服务器以错误代码响应,表明它没有收到正文。
如何使用 TIdHttp 发送带有 GET 请求的正文?
【问题讨论】:
-
设计该服务器的人犯了一个巨大的错误。虽然 HTTP 标准在技术上确实允许
GET中的正文,但它不受官方支持。似乎TIdHTTP只是忽略了GET请求中的正文。阅读更多:stackoverflow.com/questions/978061/http-get-with-request-body -
长话短说,您的选择是 A) 破解
TIdHTTP以使其发送正文,或 B) 找到另一个支持此功能的 HTTP 组件(这不太可能)。 -
@JerryDodge “设计该服务器的人更关注文档化标准,而不是广泛实施的事实标准”。在那里,我为你修好了。当我在一家构建集成中间件的公司工作时,我们遇到了完全相同的问题——你会惊讶于有多少公司实施了 REST Api,在 Api 端点行为方面 [gasp] 遵循 HTTP 标准,而不是遵循 浏览器行为人群。我们只是简单地修改了我们的 Indy 代码以使其成为可能。 :耸肩::)