数据进行 POST 请求"/>
使用 ironpython 对 json 数据进行 POST 请求
我正在用 ironpython 编写代码,我正在尝试向请求正文中包含 json 的服务器发送 http post 请求。为此,我使用 C# 方法:
HttpWebRequest
。我知道有更高级和更简单的方法,但这是我必须的工作方式。
我的服务器是使用 express 在 nodejs 中编写的。
这是我的客户代码:
import json
import clr
clr.AddReference('System')
clr.AddReference('System.IO')
clr.AddReference('System.Net')
from System import Uri
from System.Net import HttpWebRequest
from System.Net import HttpStatusCode
from System.IO import StreamReader, StreamWriter
def post(url, data):
req = HttpWebRequest.Create(Uri(url))
req.Method = "POST"
req.ContentType = "application/json"
json_data = json.dumps(data)
reqStream = req.GetRequestStream()
streamWriter = StreamWriter(reqStream)
streamWriter.Write(json_data)
streamWriter.Flush()
streamWriter.Close()
res = req.GetResponse()
if res.StatusCode == HttpStatusCode.OK:
responseStream = res.GetResponseStream()
reader = StreamReader(responseStream)
responseData = reader.ReadToEnd()
return responseData
res = post('http://localhost:5050/hello', postData)
print(res)
这是我的服务器代码:
const express = require("express");
let app = express();
const PORT = process.env.PORT || 5050;
app.post("/hello", (req, res) => {
console.log("Hi!")
console.log(req.body)
res.json({"message": "Hello World"})
})
app.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
当我运行我的客户端代码时,我在输出中得到服务器的响应
{"message": "Hello World"}
。
在服务器上我当然看到了日志:“嗨!”,但是req.body
的输出是undefined
.
我乱七八糟的,真不知道我的代码有什么问题,为什么我获取不到客户端发送的json?为什么我得到
undefined
?
很高兴得到你的帮助。
回答如下:更多推荐
使用 ironpython 对 json 数据进行 POST 请求
发布评论