我正在尝试使用request.el程序包将数据发布到侦听端口8765的本地服务器,但是我没有成功--我总是收到空响应。我想知道端口号是否做错了-在request.el的文档中没有看到任何相关示例。也许我没有为服务器期望的json数据使用正确的语法。这是详细信息:
我有一个本地服务器在本地计算机上运行,并侦听端口8765。它接受json对象,指示应执行的操作。例如,我可以使用curl来获取服务器的版本号,如下所示:
curl localhost:8765 -X POST -d "{\"action\":\"version\", \"version\":6}"
服务器的响应是:
{"result": 6, "error": null}
我的等效于curl的request.el函数是:
(request
"http://127.0.0.1:8765"
:type "POST"
:data '(("action . ""version") ("version" . 6))
:parser 'buffer-string
:complete (cl-function
(lambda (&key response &allow-other-keys)
(message "Response is: %S" (request-response-data response)))))
我期望返回相同的JSON对象curl返回,相反,我得到null:
Response is: "null"
换句话说,服务器似乎不理解该请求。我想知道我在做什么错?
您当前正在以默认格式发布数据,这是一个查询字符串:
action=version&version=6
但是您应该发布JSON数据:
{"action":"version","version":6}
更改:data
规范以使用JSON编码:
:data (json-encode '(("action" . "version") ("version" . 6)))