我在 django 中创建了一个网络服务并将其托管在共享服务器上。django 网络服务响应来自 unity 中制作的游戏的请求。 .但是每当游戏尝试请求 django Web 服务 url 时,服务器都会发送空响应。响应始终是:
WWW 错误:服务器返回空字符串
Unity 网络播放器期望一个名为“crossdomain.xml”的 http 服务策略文件在您要使用 WWW 类访问的域上可用(尽管如果它是托管 unity3d 的同一域则不需要文件)。所以我在我的域的根目录下放置了一个文件“crossdomain.xml”,但我仍然得到相同的空回复。请帮助...
编辑: 我通过浏览器尝试过我的服务工作正常并回复正确的响应。你知道当两者都在本地机器上运行时我的游戏可以与 django 网络服务通信。但现在 django 项目托管在实际服务器上并且当游戏尝试访问时服务它永远得不到回应:(
url.py
urlpatterns = patterns('',
url(r'^crossdomain.xml$',views.CrossDomain),
url(r'^ReadFile/$',views.ReadFile),
)
views.py
def CrossDomain(request):
f = open(settings.MEDIA_ROOT+'jsondata/crossdomain.xml', 'r')
data = f.read()
f.close()
return HttpResponse(data, mimetype="application/xml")
def ReadFile(request):
f = open(settings.MEDIA_ROOT+'jsondata/some_file.json', 'r')
data = f.read()
f.close()
return HttpResponse(data, mimetype="application/javascript")
def Test(request):
return HttpResponse("Hello", mimetype="text/plain")
最佳答案
正如我所说,为此使用 django 有点矫枉过正,因为您可以为它们提供服务。不过要放在一边。如果您在不同的服务器上服务,则可能是
A) 连接问题意味着您的响应丢失 B)防火墙问题意味着请求意味着什么 C) 服务器设置不正确,因此会出现错误。
您需要在服务器上测试响应。您通过浏览器访问服务器上的页面也是如此。如果是,则让游戏发出请求并检查服务器错误和访问日志。在 apache 访问日志中,您应该看到类似
的内容每次发出请求时获取“/url”200。
如果您没有看到任何请求通过,则说明该请求未发出或已丢失。 如果这样做,则问题出在代码中的某处。
关于python - 来自 Django Web 服务的空回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9076584/