Django Web服务返回空回复

2 投票
1 回答
1396 浏览
提问于 2025-04-17 12:00

我在Django中创建了一个网络服务,并把它放在一个共享服务器上。这个Django网络服务是用来响应一个用Unity制作的游戏的请求。但是每当游戏尝试请求Django网络服务的地址时,服务器总是返回空的响应。响应内容总是:

WWW错误:服务器返回空字符串

Unity的网页播放器希望在你想要通过WWW类访问的域名上有一个名为"crossdomain.xml"的HTTP政策文件(不过如果是同一个域名托管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")

1 个回答

0

正如我所说,使用Django来处理这个问题有点过于复杂,因为你其实可以直接提供服务。不过不管怎样,如果你是在不同的服务器上提供服务,可能会遇到以下问题:

A) 连接问题可能导致你的响应丢失。

B) 防火墙问题可能会影响请求的意义。

C) 服务器没有正确设置,因此可能会出现错误。

你需要在服务器上测试响应。所以,你可以通过浏览器访问服务器上的页面。如果可以访问,那么让游戏发出请求,并检查服务器的错误和访问日志。在Apache的访问日志中,你应该能看到类似这样的记录:

GET "/url" 200,每次请求都会记录一次。

如果你没有看到任何请求通过,那么要么请求没有发出,要么请求被丢失了。如果你看到了请求,那么问题可能出在代码的某个地方。

撰写回答