我正在尝试将图像发送到Unity的NodeJS API,但不幸的是我无法使其工作。这是我的c#代码的摘录:
private string POSTUrl = "http://myNodeJSAPI.com/upload-image";
private Dictionary<string, string> postHeader = new Dictionary<string, string>();
public WWW POST() {
WWW www;
postHeader["content-Type"] = "application/octet-stream";
postData = File.ReadAllBytes("Assets/Resources/ImageIWantToSend.png");
www = new WWW(POSTUrl, postData, postHeader);
StartCoroutine(WaitForRequest(www));
return www;
}
IEnumerator WaitForRequest(WWW www)
{
yield return www;
if (www.error == null)
{
Debug.Log("WWW Ok!: " + www.text);
}
else
{
Debug.Log("WWW Error: " + www.error);
}
}
这里我的nodejs的相关部分是:
app.post('/upload-image', rawBody, function (req, res) {
console.log("File received!");
if (req.rawBody && req.bodyLength > 0) {
fs.writeFile("/tmp/ImageIWantToSend.png", req.rawBody, function (err) {
if (err) {
return console.log(err);
}
console.log("Image has been saved! Starting other things...");
})
}
}
请求已发送但API从未收到(我得到503坏网关)。我在外面 Unity尝试相同的请求它似乎工作(使用Postman:基本的帖子请求,图像附加为二进制)。
我犯了错误,还是有其他办法实现这一目标? 谢谢!
编辑:我最终通过将application/octet-stream
更改为text/html
来解决了问题。如果有更好的方法将数据发送到Nodejs,我仍然感兴趣
答案 0 :(得分:1)
查看Unity的新UnityWebRequest 课程。它是原始WWW的替代品。
您还可以使用C#WebClient或HttpWebRequest类。如果您不使用WebGL构建,它们可以与Unity一起使用。
这也是处理请求的good unity plugin,但它不是免费的。