You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python HTTP Server仅提取POST请求中的目标消息内容?

如何从Python HTTP Server的请求中提取目标消息内容

当然可行!关键是要根据Unity发送的数据格式来做对应的解析,下面分几种常见情况给你说明:

1. 先明确Unity的请求数据格式

首先得确认Unity是用哪种方式把"test"发过来的——是纯文本、表单字段,还是JSON?不同的格式对应的解析逻辑不一样,先搞清楚这个会少走很多弯路。

2. 不同格式的提取实现

情况一:Unity发送纯文本数据

如果Unity直接把"test"作为请求体的原始内容发送(比如没有包装成表单或JSON),那处理起来最简单:

# 假设你用的是BaseHTTPRequestHandler
content_length = int(self.headers.get('Content-Length', 0))
raw_data = self.rfile.read(content_length)
# 把二进制数据解码为字符串,记得指定编码(通常是utf-8)
target_message = raw_data.decode('utf-8').strip()
# 这里target_message就是你要的"test"了
print(target_message)

情况二:Unity发送表单数据(用WWWForm)

很多Unity开发者会用WWWForm来构造请求,这种情况下数据是表单格式的:
Unity端示例代码:

WWWForm form = new WWWForm();
// 把消息放在名为"message"的字段里
form.AddField("message", "test");
UnityWebRequest www = UnityWebRequest.Post("http://your-server-ip:port", form);
yield return www.SendWebRequest();

对应的Python服务器解析代码:

import urllib.parse

content_length = int(self.headers.get('Content-Length', 0))
raw_data = self.rfile.read(content_length)
# 解析表单数据,得到一个字典(值是列表类型)
form_data = urllib.parse.parse_qs(raw_data.decode('utf-8'))
# 提取目标字段,取列表的第一个元素
target_message = form_data.get('message', [''])[0]
print(target_message) # 输出"test"

情况三:Unity发送JSON格式数据

如果Unity用JSON序列化对象发送(比如用JsonUtility),那需要解析JSON:
Unity端示例代码:

// 定义一个数据类
public class RequestData {
    public string message;
}

RequestData data = new RequestData();
data.message = "test";
string jsonStr = JsonUtility.ToJson(data);

UnityWebRequest www = UnityWebRequest.Post("http://your-server-ip:port", jsonStr);
// 一定要设置Content-Type头,告诉服务器这是JSON
www.SetRequestHeader("Content-Type", "application/json");
yield return www.SendWebRequest();

对应的Python服务器解析代码:

import json

content_length = int(self.headers.get('Content-Length', 0))
raw_data = self.rfile.read(content_length)
# 解析JSON字符串为字典
json_data = json.loads(raw_data.decode('utf-8'))
# 提取目标字段
target_message = json_data.get('message', '')
print(target_message) # 输出"test"

3. 额外注意事项

  • 编码统一:确保Unity和Python都用utf-8编码,避免出现乱码问题
  • 请求头匹配:比如发送JSON时,Unity必须设置Content-Type: application/json,Python服务器也可以检查这个头来判断解析方式
  • 异常处理:可以加try-except块处理解析失败的情况(比如数据格式错误),防止服务器崩溃

内容的提问来源于stack exchange,提问作者Jesais Pas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:35:55