Exemple #1
0
    public void Post(UWebRequest request, UWebArg customArgs, UWebMgr.OnWebResponse onResponse, UWebMgr.OnWebError onError, float timeOutInterval)
    {
        UWebRequestProxy proxy = new UWebRequestProxy();

        proxy.m_Request = request;

        if (request.isCompressed)
        {
            customArgs.Add("compress", 1);
        }

        if (m_isUrlArgs)
        {
            proxy.m_UrlArgs    = customArgs.ToString();
            proxy.m_MergedArgs = customArgs.GetMergedArgs();
        }
        else
        {
            proxy.m_Form = customArgs.ToForm();
        }

        proxy.m_OnResponse      = onResponse;
        proxy.m_OnError         = onError;
        proxy.m_TimeOutInterval = timeOutInterval;
        proxy.m_LocalArg        = customArgs.localArg;

        m_RequestQueue.Enqueue(proxy);
    }
Exemple #2
0
 void Update()
 {
     if (m_ActiveRequestProxy == null && m_RequestQueue.Count > 0)
     {
         //temp: optimize
         m_ActiveRequestProxy = m_RequestQueue.Dequeue();
         m_PostCoroutine      = DoPost();
         StartCoroutine(m_PostCoroutine);
     }
 }
Exemple #3
0
    IEnumerator DoPost()
    {
        //var headers = m_ActiveRequestProxy.m_Form.headers;
        var headers = new Dictionary <string, string>();

        headers["Accept-Encoding"] = "identity";

        //string url = m_UrlRoot + "?ctl=" + m_ActiveRequestProxy.m_Request.remoteClass + "&act=" + m_ActiveRequestProxy.m_Request.remoteMethod;
        string url = m_UrlRoot + m_ActiveRequestProxy.m_Request.remoteParentName + "/" + m_ActiveRequestProxy.m_Request.remoteName + "/"
                     + m_ActiveRequestProxy.m_Request.remoteFolder + "/" + m_ActiveRequestProxy.m_Request.remoteMethod + "?";

        if (!string.IsNullOrEmpty(m_SessionToken))
        {
            url += "token=" + m_SessionToken;
        }

        if (!string.IsNullOrEmpty(m_ActiveRequestProxy.m_UrlArgs))
        {
            url += "&" + m_ActiveRequestProxy.m_UrlArgs;
        }

        //if (m_isUseSignature)
        //{
        //    string merged = m_ActiveRequestProxy.m_Request.remoteClass + m_ActiveRequestProxy.m_Request.remoteMethod + m_SessionToken + m_ActiveRequestProxy.m_MergedArgs + m_Salt;
        //    string md5 = UUtil.Md5Sum(merged);
        //    url += "&" + "sign=" + md5;
        //}

        float timeOut = Time.realtimeSinceStartup + m_ActiveRequestProxy.m_TimeOutInterval;

        //using (WWW www = new WWW(url, m_ActiveRequestProxy.m_Form.data, headers))

        Debug.Log("Web Request:" + url);

        if (m_OnPostBegin != null)
        {
            m_OnPostBegin();
        }

        using (WWW www = new WWW(url, (m_ActiveRequestProxy.m_Form != null) ? m_ActiveRequestProxy.m_Form.data : null, headers))
        {
            while (Time.realtimeSinceStartup < timeOut)
            {
                if (!www.isDone)
                {
                    yield return(null);
                }
                else
                {
                    break;
                }
            }

            object data = null;

            if (www.isDone)
            {
                string strData = string.Empty;

                //iOS decompress packets by default
#if !UNITY_IPHONE
                if (m_ActiveRequestProxy.m_Request.isCompressed)
                {
                    //Debuger.LogError("Bytes downloaded:" + www.bytesDownloaded + "," + www.bytes.Length);
                    //Debuger.LogError("Bytes:" + ByteArrayToString(www.bytes));
                    //Debuger.LogError("String:" + www.text);
                    strData = UZipUtil.UnzipMemoryData(www.bytes);
                }
                else
#endif
                {
                    strData = www.text;
                }

                Debug.Log("Web Response:" + strData);
                if (strData.Contains("404 NOT Found"))
                {
                    if (m_OnPostEnd != null)
                    {
                        m_OnPostEnd(data);
                    }
                    yield break;
                }
                data = m_ActiveRequestProxy.m_Request.ToDataObject(strData);

                if (m_ActiveRequestProxy.m_OnResponse != null)
                {
                    m_ActiveRequestProxy.m_OnResponse(m_ActiveRequestProxy.m_Request.id, data, m_ActiveRequestProxy.m_LocalArg);
                }

                if (m_ErrMsgReporter != null)
                {
                    m_ErrMsgReporter(m_ActiveRequestProxy.m_Request.id, data);
                }

                //hook
                if (m_ResponseHook != null)
                {
                    m_ResponseHook(m_ActiveRequestProxy.m_Request.id, strData, m_ActiveRequestProxy.m_LocalArg);
                }
            }
            else
            {
                if (m_ActiveRequestProxy.m_OnError != null)
                {
                    m_ActiveRequestProxy.m_OnError(m_ActiveRequestProxy.m_Request.id, m_PostFailureMsg);
                }

                //hook
                if (m_ErrorHook != null)
                {
                    m_ErrorHook(m_ActiveRequestProxy.m_Request.id, m_PostFailureMsg);
                }
            }

            m_ActiveRequestProxy = null;

            if (m_OnPostEnd != null)
            {
                m_OnPostEnd(data);
            }
        }
    }