使用 ironpython 对 json 数据进行 POST 请求

问题描述 投票:0回答:0

我正在用 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

很高兴得到你的帮助。

node.js python-2.7 express post ironpython
© www.soinside.com 2019 - 2024. All rights reserved.