从Unity 2018中的服务器获取图像

时间:2019-03-20 12:14:00

标签: unity3d server wsgi unitywebrequest

我需要在Unity3D的客户端应用程序中使用wgsi从简单服务器接收图像。我的代码现在看起来像这样:

服务器部分:

if environ['REQUEST_METHOD'] == 'GET':
        status = '200 OK'
        headers = [('Content-type', 'image/png')]
        start_response(status, headers)

        return open("./static/uploads/04b32b3b6249487fbe042cadc97748b5.png", "rb").read()

客户:

    UnityWebRequest www = UnityWebRequestTexture.GetTexture(uploadURL);

    yield return www.SendWebRequest();

    if (www.isNetworkError || www.isHttpError)
    {
        Debug.Log(www.error);
    }
    else
    {
        Debug.Log("gno");
        this.GetComponent<RawImage>().texture = DownloadHandlerTexture.GetContent(www);
    }
}

我的疑问是UnityWebRequestTexture.GetTexture()总是采用直接指向图像的URL,在我看来,它不是,但是GET方法直接将图像返回给客户端。

当我在Unity Editor中收到Failed to receive data错误时,客户端将图像发送到服务器的所有POST方法都可以正常工作。

1 个答案:

答案 0 :(得分:0)

问题很简单,我没有将内容长度放在标题中。因此服务器部分应该是:

if environ['REQUEST_METHOD'] == 'GET':
        status = '200 OK'
        headers = [('Content-type', 'image/png')]
        img=open("./static/uploads/"+"imageName", "rb").read()
        start_response(status,[
            ('Content-type', 'image/png'),
            ('Content-Length', str(len(img))),
        ])

        return img