使用Unity3D中的图像发送POST请求

时间:2017-03-29 19:51:11

标签: c# node.js unity3d

我正在尝试将图像发送到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,我仍然感兴趣

1 个答案:

答案 0 :(得分:1)

查看Unity的新UnityWebRequest 课程。它是原始WWW的替代品。

您还可以使用C#WebClient或HttpWebRequest类。如果您不使用WebGL构建,它们可以与Unity一起使用。

这也是处理请求的good unity plugin,但它不是免费的。