【发布时间】:2018-05-17 04:43:30
【问题描述】:
我正在尝试在我们的节点 (express.js) 服务器和供应商服务器之间建立持久连接。我们目前正在使用“request" 库,尽管我们可以轻松地移至其他库。https://www.npmjs.com/package/request
供应商告诉我们 Post 请求的主体(到他们的 API)需要在 Content-Type, charset, 等之前出现。所以像这样:
"POST / HTTP/1.1\r\nREQUEST_JSON_API: **{\"REQUEST_TYPE\":\"STATUS\"}** \r\nContent-Type: application/json\r\ncharset: utf-8\r\nUser-Agent.."
而不是目前的情况:
"POST / HTTP/1.1\r\nhost: xxx.x.xxx.1:3000\r\naccept: application/json\r\ncontent-type: application/json\r\ncontent-length: 25\r\nConnection: keep-alive\r\n\r\n **{\"REQUEST_TYPE\":\"STATUS\"}**"
请问有人对如何解决这个问题有任何建议吗?
【问题讨论】:
-
我猜你只是想手动发送。正如你在这里写的。 %)P
-
POST 的正文出现在标题之前是没有意义的。那不是HTTP。您的第一个示例根本没有显示这一点。它显示了一个名为
REQUEST_JSON_API:的自定义标头,其中包含一些 JSON 作为该标头的值。它没有向 POST 显示任何正文,因为正文在\r\n\r\n之后,而您在第一个示例中没有这些正文。 -
您应该能够使用
request()库轻松指定名为REQUEST_JSON_API:的自定义标头。你试过了吗? -
在我看来,您误解了他们想要什么。您正试图将数据放在 POST 正文中,但显然他们希望将数据放在自定义标头中。那是合法的 HTTP,只是与您尝试发送的不同。您可以使用任何普通的 HTTP 库(例如
request()库)来做到这一点。您只需要构建正确的自定义 HTTP 标头并在 POST 请求中指定。 -
不,我不认为这是一个好的设计,只是他们这样做的方式,所以你必须以这种方式创建请求才能使其工作。无需研究优势。
标签: node.js http https npm-request