我需要在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方法都可以正常工作。
答案 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