Pull to refresh

Comments 6

Сделал на WWW систему динамической подгрузки бандлов. Еще WWW файлы по частям не умеет грузить. Когда-то реализовывали download manager контента с загрузкой файлов по частям, с поддержкой паузы закачки.
В одном из проектов использую просто обвертку по типу:

public WWW POST (string url, Dictionary<string,string> post)
{
    WWWForm form = new WWWForm ();
    foreach (KeyValuePair<string,string> post_arg in post)
    {
        form.AddField (post_arg.Key, post_arg.Value);
    }
    WWW www = new WWW (url, form);	
    StartCoroutine (WaitForRequest (www));
	
    return www; 
}

Ответ с сервера приходит в json.
А что у вас делает код, который вызывает POST(..);, проверяет на request.isDone? Как раз я хотел избавиться от этого.

Может есть решение, которое позволяет красиво это сделать?
WaitForRequest просто:
private IEnumerator WaitForRequest (WWW www)
{
	yield return www;	
	if (www.error == null) {  ParseAnswer(www.text); }	
}

а сам код, который вызывает POST по типу:
public void PostComment(int gameID, string message, int parentId)
{
    var url = baseURL + "add_comment";
    var post = new Dictionary<string, string>();
    post.Add("game_id", gameID.ToString());
    post.Add("parent_id", parentId.ToString());
    post.Add("body", message);
    post.Add("facebook_id", ProfileManager.CurrentProfile.FacebookId);
    POST(url, post);
}

В принципе этого вполне хватает. Игровой проект у меня, как бы точнее сказать, нечто вроде «небольшой» социальной сети (рейтинги, комментарии, личка, друзья и т.п.), почти 80% данных хранит и обрабатывает сервер. Локально хранится только часть профиля, чтобы в офлайне поиграть могли.

По правде сказать, в юнити мне не особо нравится работа через WWW, с его асинхронностью бывают задержки на доли секунд, и тут или блокировать интерфейс перед показом, или рывок «обновления» в самом интерфейсе. А изобретать велосипед, или использовать решения по типу UniWeb уже поздно т.к. перепиливать придется много :)
Глянул статью, думал что-то полезное, но увы. Вот зачем извращаться над тем, что и так хорошо работает? Советую почитать про WWW и WWWForm (это GET и POST соотв.) более внимательно. Последний позволяет параметры вбивать в удобном формате. Вот комментом выше xa3apg привел хороший пример.

На счет проблемы синхронностью — используйте Coroutine.
Sign up to leave a comment.

Articles