Ejemplo n.º 1
0
 public void Clear()
 {
     Loader = null;
     _form  = null;
     if (_headers != null)
     {
         _headers.Clear();
     }
     ErrorCount = 0;
     _status    = WebReqestStat.Wait;
 }
Ejemplo n.º 2
0
        public IEnumerator StartRequest(object target, string method, object parameter, RemoteCallback callback, string back)
        {
            _loaded = false;
            _status = WebReqestStat.Work;
            _form   = new WWWForm();
            if (!string.IsNullOrEmpty(Gateway.AppName))
            {
                _form.AddField(Gateway.AppParameter, Gateway.AppName);
            }
            _form.AddField(Gateway.ClassKey, target is string?target.ToString() : target.GetType().Name);
            _form.AddField(Gateway.MethodKey, method);
            _form.AddField(Gateway.AppParameter, Gateway.AppName);
            if (parameter != null)
            {
                _form.AddBinaryData("data", /*_parent.Encode(parameter)*/ new Serializer().Encode(parameter));
            }

            /*if (!Application.isWebPlayer && !string.IsNullOrEmpty(Gateway.Key))
             * {
             *  _headers = new Dictionary<string, string>();
             *  _form.headers["Cookie"] = Gateway.KeyName + "=" + Gateway.Key;
             *  Loader = new WWW(_url, _form.data, _headers);
             * }
             * else*/
            Loader = new WWW(_url, _form);
            yield return(Loader);

            _loaded = true;
            if (Loader.error != null)
            {
                Debug.LogError("UWebRequest: loader ERROR " + Loader.error);
                if (callback != null)
                {
                    callback(Loader.error);
                }
                _status = WebReqestStat.Error;
                _parent.PutRequestToError(this);
                ErrorCount++;
            }
            else
            {
                var decode = true;
                if (Loader.responseHeaders != null)
                {
                    if (!Application.isWebPlayer && Loader.responseHeaders.ContainsKey("SET-COOKIE"))
                    {
                        var cookies = Loader.responseHeaders["SET-COOKIE"].Split(';');
                        foreach (
                            var cook in
                            cookies.Select(cooky => cooky.Split('='))
                            .Where(cook => cook[0].Trim().Equals(Gateway.KeyName)))
                        {
                            Gateway.Key = cook[1].Trim();
                        }
                    }
                    if (Loader.responseHeaders.ContainsKey("NODECODE"))
                    {
                        decode = false;
                    }
                }
                object val;
                if (decode)
                {
                    val = new Serializer().Decode(Loader.bytes) ?? Loader.text;
                }
                else
                {
                    val = Loader.text;
                }
                if (val is UError)
                {
                    _status = WebReqestStat.Error;
                    _parent.PutRequestToError(this);
                    ErrorCount++;
                }
                else
                {
                    if (back != null)
                    {
                        SetBack(back, ref target, val);
                    }
                    if (callback != null)
                    {
                        callback(val);
                    }
                    _status = WebReqestStat.Wait;
                    _parent.BackRequestToPool(this);
                }
            }
        }