Я создал веб-службу в django и ее размещал на общем сервере. Веб-сервис django отвечает на запрос из игры, сделанной в единстве. Но всякий раз, когда игра пытается запросить URL-адрес веб-службы django, сервер отправляет пустой ответ. Ответ всегда:
WWW Ошибка: сервер возвращает пустую строку
Веб-проигрыватель Unity ожидает, что файл HTTP с поддержкой HTTP с именем "crossdomain.xml" будет доступен в домене, к которому вы хотите получить доступ, с WWW-классом (хотя это не нужно, если это тот же домен, на котором размещается unit3d файл). Так что я поместил файл "crossdomain.xml" в корень моего домена, но все же я получаю тот же пустой ответ.Помощь plz...
EDIT: Я пробовал это через браузер, мой сервис отлично работает и отвечает надлежащим ответом. И вы знаете, что моя игра может связываться с веб-сервисом 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 вы должны увидеть что-то вроде
GET "/url" 200 каждый раз, когда выполняется запрос.
Если вы не видите какого-либо запроса, то либо запрос не будет выполнен, либо потерян. Если вы это сделаете, проблема будет где-то в коде.