Json 如何使用request.el与本地服务器通信

Json 如何使用request.el与本地服务器通信,json,request,elisp,Json,Request,Elisp,我试图使用request.el包将数据发送到监听端口8765的本地服务器,但没有成功——我总是得到一个空响应。我想知道我的端口号是否有问题——我在request.el的文档中没有看到任何相关的例子。或者可能我没有为服务器期望的json数据使用正确的语法。详情如下: 我有一个本地服务器在本地机器上运行,并在端口8765上侦听。它接受json对象,指示应该执行的操作。例如,我可以使用curl获取服务器的版本号,如下所示: curl localhost:8765 -X POST -d "{\"acti

我试图使用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:

响应为:“null”


换句话说,服务器似乎不理解请求。我想知道我做错了什么

您当前正在以默认格式发布数据,这是一个查询字符串:

action=version&version=6
但您应该发布JSON数据:

{"action":"version","version":6}
:data
规范更改为使用JSON编码:

:data (json-encode '(("action" . "version") ("version" . 6)))

这么简单…但我必须至少读了10遍申请文件