C# HttpListener接受unity传的 using (UnityWebRequest webRequest = UnityWebRequest.Post(urla, new List<IMultipartFormSection> { new MultipartFormDataSection("Filename", filename), new MultipartFormFileSection("file", data, filename, "application/octet-stream")}))
时间: 2024-01-08 22:01:49 浏览: 141
使用 C# 的 HttpListener 接收 Unity 传来的文件,你可以按照以下步骤操作:
1. 在 C# 中创建一个 HttpListener 对象并指定监听的 URL:
```
string url = "http://localhost:8080/"; // 监听的 URL
HttpListener listener = new HttpListener();
listener.Prefixes.Add(url);
```
2. 启动 HttpListener:
```
listener.Start();
```
3. 在 HttpListener 上异步接收请求:
```
while (true)
{
HttpListenerContext context = await listener.GetContextAsync();
// 处理请求
}
```
4. 在处理请求的代码中,获取 UnityWebRequest 发送的数据:
```
HttpListenerRequest request = context.Request;
if (request.HttpMethod == "POST")
{
using (Stream body = request.InputStream) // 获取请求的 Body
{
StreamReader reader = new StreamReader(body, request.ContentEncoding);
string content = reader.ReadToEnd(); // 读取 Body 的内容
// 处理 content
}
}
```
其中,content 的内容就是 UnityWebRequest 发送的数据。你可以将 UnityWebRequest.Post 方法的第二个参数传入的 List<IMultipartFormSection> 转换成一个字节数组作为数据的内容。
具体转换方法可以参考如下代码:
```
foreach (IMultipartFormSection section in formSections)
{
if (section is MultipartFormDataSection)
{
MultipartFormDataSection field = (MultipartFormDataSection)section;
string header = string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"", field.sectionName, field.fileName);
byte[] headerBytes = Encoding.UTF8.GetBytes(header);
byte[] data = field.GetRawBytes();
byte[] footerBytes = Encoding.UTF8.GetBytes("\r\n");
byte[] contentBytes = new byte[headerBytes.Length + data.Length + footerBytes.Length];
Buffer.BlockCopy(headerBytes, 0, contentBytes, 0, headerBytes.Length);
Buffer.BlockCopy(data, 0, contentBytes, headerBytes.Length, data.Length);
Buffer.BlockCopy(footerBytes, 0, contentBytes, headerBytes.Length + data.Length, footerBytes.Length);
// 将 contentBytes 作为请求的 Body 发送给 C# 的 HttpListener
}
}
```
需要注意的是,UnityWebRequest.Post 方法发送的数据采用 multipart/form-data 格式,因此需要按照该格式解析数据。
阅读全文