Exemplo n.º 1
0
 private void Raise(HttpCallback cb, HttpParser p)
 {
     if (null != cb)
     {
         cb(p);
     }
 }
Exemplo n.º 2
0
    IEnumerator getAsync(string url, HttpCallback callbackFunc)
    {
        var api = "";

        if (apiKey != "")
        {
            api = "?X-Api-Key=" + apiKey;
        }

        url = url + api;
        Debug.Log(url);
        WWW www = new WWW(url);


        yield return(www);

        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
            callbackFunc(true, www.error);
        }
        else
        {
            Debug.Log(www.text);


            callbackFunc(false, www.text);
        }
    }
Exemplo n.º 3
0
        private static async void doHttp(SdSource source, String url, Dictionary<String, String> args, SdNode config, __CacheBlock cache, HttpCallback callback) {


            var encoding = Encoding.GetEncoding(config.encode());

            AsyncHttpClient client = new AsyncHttpClient();

            if (config.isInCookie() && string.IsNullOrEmpty(source.cookies()) == false) {
                client.Cookies(source.cookies());
            }

            client.Header("User-Agent", source.ua());
            client.Encoding(config.encode());

            string newUrl = null;
            if (url.IndexOf(" ") >= 0)
                newUrl = Uri.EscapeUriString(url);
            else
                newUrl = url;

            if (config.isInReferer()) {
                client.Header("Referer", source.buildReferer(config, url));
            }

            if (string.IsNullOrEmpty(config.accept) == false) {
                client.Header("Accept", config.accept);
                client.Header("X-Requested-With", "XMLHttpRequest");
            }

            client.Url(newUrl);

            string temp = null;

            try {
                AsyncHttpResponse rsp = null;
                if ("post".Equals(config.method))
                    rsp = await client.Post(args);
                else
                    rsp = await client.Get();

                if (rsp.StatusCode == HttpStatusCode.Ok) {
                    source.setCookies(rsp.Cookies);
                    temp = rsp.GetString();
                }
            }
            catch(Exception ex) {
                Util.log(source, "HTTP", ex.Message);
            }

            if (temp == null) {
                if (cache == null)
                    callback(-2, null);
                else
                    callback(1, cache.value);
            }
            else
                callback(1, temp);
        }
Exemplo n.º 4
0
        public RequestTask Get(string url, bool needUnZip, int timeout, HttpCallback callback)
        {
            UnityWebRequest request = UnityWebRequest.Get(url);

            if (timeout > 0)
            {
                request.timeout = timeout;
            }
            return(AddRequestTask(request, url, "", needUnZip, callback));
        }
Exemplo n.º 5
0
        private void Raise(HttpCallback cb, HttpParser p)
        {
            if (cb == null)
            {
                return;
            }

            try {
                cb(p);
            } catch (Exception e) {
                Console.WriteLine(e);

                RaiseOnError(p, e.Message, null, -1);
                return;
            }
        }
Exemplo n.º 6
0
    IEnumerator CoUpdateUserData(HttpCallback onComplete)
    {
        WWWForm formData = new WWWForm();

        formData.AddField("_method", "put");
        formData.AddField("level", level);
        formData.AddField("exp", exp);
        formData.AddField("rexp", rexp);
        formData.AddField("totalKills", totalKills);
        formData.AddField("spentCash", spentCash);
        formData.AddField("killsGlock", killsGlock);
        formData.AddField("killsMp5k", killsMp5k);
        formData.AddField("killsM870", killsM870);
        formData.AddField("killsAkm", killsAkm);
        formData.AddField("killsPython", killsPython);
        formData.AddField("killsUmp45", killsUmp45);

        WWW httpResult = new WWW("http://<YOUR_SERVER_IP>/user?token=" + token, formData);

        yield return(httpResult);

        if (httpResult.responseHeaders.Count > 0)
        {
            string   statusText = httpResult.responseHeaders["STATUS"];
            int      statusCode = HttpHelper.GetStatusCode(statusText);
            JsonData resultJson = JsonMapper.ToObject(httpResult.text);

            if (statusCode == 200)
            {
                onComplete(null);
            }
            else
            {
                string errorMessage = (string)resultJson["message"];
                onComplete(errorMessage);
            }
        }
        else
        {
            onComplete("Invalid HTTP Response");
        }
    }
Exemplo n.º 7
0
    IEnumerator postAsyncJSON(string url, string parameters, HttpCallback callbackFunc)
    {
        WWW       www;
        Hashtable postHeader = new Hashtable();

        postHeader.Add("Content-Type", "application/json");

        if (apiKey != "")
        {
            postHeader.Add("X-Api-Key", apiKey);
        }
        Debug.Log(url);
        Debug.Log(parameters);


        // convert json string to byte
        var formData = System.Text.Encoding.UTF8.GetBytes(parameters);

        www = new WWW(url, formData, postHeader);

        yield return(www);

        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
            if (!string.IsNullOrEmpty(www.text))
            {
                callbackFunc(true, www.text);
            }
            else
            {
                callbackFunc(true, www.error);
            }
        }
        else
        {
            Debug.Log(www.text);


            callbackFunc(false, www.text);
        }
    }
Exemplo n.º 8
0
        public void Start(ref string strURL, ref string strPostString, HttpCallback callback, object extrans, bool bImmediate = false)
        {
            m_strURL             = strURL;
            m_PostString         = strPostString;
            this.m_httpCallback += callback;
            this.param           = extrans;

            if (!bImmediate)
            {
                m_httpThread = new Thread(this.Proc);
                if (m_httpThread != null)
                {
                    m_httpThread.Start();
                }
            }
            else
            {
                Proc();
            }
        }
Exemplo n.º 9
0
    IEnumerator CoGetUserData(HttpCallback onComplete)
    {
        WWW httpResult = new WWW("http://<YOUR_SERVER_IP>/user?token=" + token);

        yield return(httpResult);

        if (httpResult.responseHeaders.Count > 0)
        {
            string   statusText = httpResult.responseHeaders["STATUS"];
            int      statusCode = HttpHelper.GetStatusCode(statusText);
            JsonData resultJson = JsonMapper.ToObject(httpResult.text);

            if (statusCode == 200)
            {
                level       = (int)resultJson["level"];
                exp         = (int)resultJson["exp"];
                rexp        = (int)resultJson["rexp"];
                totalPlays  = (int)resultJson["totalPlays"];
                totalKills  = (int)resultJson["totalKills"];
                spentCash   = (int)resultJson["spentCash"];
                killsGlock  = (int)resultJson["kills"]["glock"];
                killsMp5k   = (int)resultJson["kills"]["mp5k"];
                killsM870   = (int)resultJson["kills"]["m870"];
                killsAkm    = (int)resultJson["kills"]["akm"];
                killsPython = (int)resultJson["kills"]["python"];
                killsUmp45  = (int)resultJson["kills"]["ump45"];

                onComplete(null);
            }
            else
            {
                string errorMessage = (string)resultJson["message"];
                onComplete(errorMessage);
            }
        }
        else
        {
            onComplete("Invalid HTTP Response");
        }
    }
Exemplo n.º 10
0
        public async static void http(SdSource source, bool isUpdate, String url, Dictionary<String, String> args, SdNode config, HttpCallback callback) {
            __CacheBlock block = null;
            if (isUpdate == false && config.cache > 0) {
                block = cache.get(url);
            }

            if (block != null) {
                if (config.cache == 1 || block.seconds() <= config.cache) {
                    await Task.Delay(100);
                    callback(1, block.value);
                    return;
                }
            }

            doHttp(source, url, args, config, block,(code, data) => {
                if (code == 1 && config.cache > 0) {
                    cache.save(url, data);
                }

                callback(code, data);
            });
        }
Exemplo n.º 11
0
    IEnumerator postAsync(string urlString, Dictionary <string, string> parameters, HttpCallback callbackFunc)
    {
        WWWForm form = new WWWForm();

        foreach (string paramKey in parameters.Keys)
        {
            form.AddField(paramKey, parameters[paramKey]);
        }


        var headers = form.headers;
        var rawData = form.data;

        WWW www = new WWW(urlString, rawData, headers);


        yield return(www);

        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
            if (!string.IsNullOrEmpty(www.text))
            {
                callbackFunc(true, www.text);
            }
            else
            {
                callbackFunc(true, www.error);
            }
        }
        else
        {
            Debug.Log(www.text);


            callbackFunc(false, www.text);
        }
    }
Exemplo n.º 12
0
    public static IEnumerator HttpGet(string url, HttpCallback callback = null)
    {
        UnityWebRequest request = UnityWebRequest.Get(url);

        yield return(request.SendWebRequest());

        JsonData jd = null;

        if (request.isNetworkError)
        {
            Debug.Log("request url: " + url + " error: " + request.error);
        }
        else if (request.responseCode == 200)
        {
            string text = request.downloadHandler.text;
            // Debug.Log(text);
            jd = JsonMapper.ToObject(text);
        }
        if (callback != null)
        {
            callback.Invoke(jd);
        }
    }
Exemplo n.º 13
0
 /// <summary>
 /// Raises <see cref="HttpCallback"/> event
 /// </summary>
 /// <param name="sender">Event sender - a <see cref="TcpClient"/> object representing agent client</param>
 /// <param name="e">Event parameters</param>
 protected virtual void OnHttpCallback(object sender, HttpCallbackEventArgs e)
 {
     HttpCallback?.Invoke(sender, e);
 }
Exemplo n.º 14
0
 /// <summary>
 /// 同步验证请求
 /// </summary>
 /// <param name="url">地址</param>
 /// <param name="encoding">编码</param>
 /// <param name="headers">请求头</param>
 /// <param name="callback">同步委托</param>
 public static void optionsSyncTo(string url, Encoding encoding, IDictionary <string, object> headers, HttpCallback callback)
 {
     httpTo(false, "OPTIONS", null, encoding, url, null, headers, callback);
 }
Exemplo n.º 15
0
        RequestTask AddRequestTask(UnityWebRequest request, string url, string saveFileFullPath, bool needUnZip, HttpCallback callback, bool first = false, bool isAssetBundle = false, string matchMd5 = null)
        {
            RequestTask requestTask = new RequestTask();

            requestTask.request = request;
            requestTask.status  = RequestTask.EStatus.Created;
            requestTask.run     = (self) =>
            {
                self.status = RequestTask.EStatus.Running;
                float startTime = Time.realtimeSinceStartup;

                UnityWebRequestAsyncOperation asyncOper = request.SendWebRequest();
                asyncOper.completed += (result) =>
                {
                    try
                    {
                        if (isAssetBundle)
                        {
                            OnRequestAssetBundleComplete(self.request, startTime, saveFileFullPath, callback, matchMd5);
                            self.status = RequestTask.EStatus.Completed;
                        }
                        else
                        {
                            Task task = OnRequestComplete(self.request, startTime, needUnZip, saveFileFullPath, callback, matchMd5);
                            if (task == null)
                            {
                                self.status = RequestTask.EStatus.Completed;
                            }
                            else
                            {
                                self.ioTask = task;
                            }
                        }
                    }
                    catch (System.Exception e)
                    {
                        Debug.LogWarning(e);
                        self.status = RequestTask.EStatus.Completed;
                    }
                };
            };

            if (first)
            {
                _httpRequestList.Insert(0, requestTask);
            }
            else
            {
                _httpRequestList.Add(requestTask);
            }

            return(requestTask);
        }
Exemplo n.º 16
0
		private void Raise (HttpCallback cb, HttpParser p)
		{
			if (null != cb)
				cb (p);
		}
Exemplo n.º 17
0
        private static void ExecHttpTo(bool async, Encoding encoding, HttpWebRequest request, HttpCallback callback)
        {
            dynamic       ret;
            AsyncCallback callback2 = null;

            if (async)
            {
                if (callback2 == null)
                {
                    callback2 = delegate(IAsyncResult item)
                    {
                        try
                        {
                            using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(item))
                            {
                                if (response.StatusCode == HttpStatusCode.OK)
                                {
                                    using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
                                    {
                                        string req = reader.ReadToEnd();
                                        try
                                        {
                                            ret = JsonConvert.DeserializeObject(req) ?? req;
                                        }
                                        catch
                                        {
                                            ret = req;
                                        }
                                        callback(ret, response);
                                    }
                                }
                                else
                                {
                                    callback("请求错误:" + response.StatusCode.ToString(), response);
                                }
                            }
                            if (request != null)
                            {
                                request.Abort();
                            }
                        }
                        catch (Exception ex)
                        {
                            BaseUtility.LogError.Error(request.RequestUri + ":" + ex.ToString());
                        }
                    };
                }
                request.BeginGetResponse(callback2, null);
            }
            else
            {
                try
                {
                    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        if (response.StatusCode == HttpStatusCode.OK)
                        {
                            using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
                            {
                                string req = reader.ReadToEnd();
                                try
                                {
                                    ret = JsonConvert.DeserializeObject(req) ?? req;
                                }
                                catch
                                {
                                    ret = req;
                                }

                                callback(ret, response);
                            }
                        }
                        else
                        {
                            callback("请求错误:" + response.StatusCode.ToString(), response);
                        }
                    }
                    if (request != null)
                    {
                        request.Abort();
                    }
                }
                catch (Exception ex)
                {
                    BaseUtility.LogError.Error(request.RequestUri + ":" + ex.ToString());
                }
            }
        }
Exemplo n.º 18
0
        private Task OnRequestAssetBundleComplete(UnityWebRequest request, float startTime, string saveFileFullPath, HttpCallback callback, string matchMd5 = null)
        {
            Dictionary <string, object> dict = new Dictionary <string, object>();
            int respCode = (int)request.responseCode;

            dict.Add("status", respCode);

            bool succeed = !request.isHttpError && !request.isNetworkError;

            if (succeed)   //success and save assetBundle to disk.
            {
                float endTime = Time.realtimeSinceStartup;

                ulong size  = request.downloadedBytes;
                float speed = size / (endTime - startTime);
                dict.Add("size", size);
                dict.Add("speed", speed);

                string data = "";

                // get assetBundle bytes
                byte[] downloadBytes = request.downloadHandler.data;

                // compare md5
                if (matchMd5 != null && StringUtils.BytesToMD5(downloadBytes) != matchMd5)
                {
                    data = string.Format("{{\"code\":5,\"message\":\"{0}\"}}", "assetBundle md5 not match");
                    dict.Add("data", data);
                }
                else
                {
                    data = "ok";
                    dict.Add("data", data);

                    AssetBundle assetBundle = AssetBundle.LoadFromMemory(downloadBytes);
                    dict.Add("assetBundle", assetBundle);

                    // save assetBundle to disk.
                    Task threadTask = new Task((bytes) =>
                    {
                        SaveFile(saveFileFullPath, (byte[])bytes);
                    }, downloadBytes);

                    lock ( _ioTaskList )
                    {
                        IOTask newTask = new IOTask();
                        newTask.threadTask = threadTask;
                        newTask.callback   = (status) =>
                        {
                            if (status != IOTask.RESULT_SUCCESS)
                            {
                                StringBuilder sb = new StringBuilder();
                                foreach (var ex in threadTask.Exception.InnerExceptions)
                                {
                                    sb.Append(ex.Message);
                                    sb.Append("\n");
                                }
                                Debug.LogError(sb.ToString());
                            }
                        };

                        _ioTaskList.Add(newTask);
                    }

                    // no need to wait after assetBundle is saved to disk.
                    callback(dict);

                    DisposeWebRequesat(request);

                    return(threadTask);
                }
            }
            else
            {
                if (request.error != null)
                {
                    dict.Add("data", request.error);
                }
                else
                {
                    dict.Add("data", "request error, respCode: " + respCode.ToString());
                }
            }

            callback(dict);

            DisposeWebRequesat(request);

            return(null);
        }
Exemplo n.º 19
0
 public void Get(HttpCallback callback)
 {
     StartCoroutine(CoGetUserData(callback));
 }
Exemplo n.º 20
0
 public void UpdateData(HttpCallback callback)
 {
     StartCoroutine(CoUpdateUserData(callback));
 }
Exemplo n.º 21
0
        private static async void doHttp(SdSource source, HttpMessage msg, __CacheBlock cache, HttpCallback callback)
        {
            var encoding = Encoding.GetEncoding(msg.config.encode());

            AsyncHttpClient client = new AsyncHttpClient();

            client.UserAgent(msg.config.ua());
            client.Encoding(msg.config.encode());

            foreach (String key in msg.header.Keys)
            {
                client.Header(key, msg.header[key]);
            }

            string newUrl = null;

            if (msg.url.IndexOf(" ") >= 0)
            {
                newUrl = Uri.EscapeUriString(msg.url);
            }
            else
            {
                newUrl = msg.url;
            }

            client.Url(newUrl);

            string temp = null;

            AsyncHttpResponse rsp = null;

            try {
                if ("post".Equals(msg.config.method))
                {
                    rsp = await client.Post(msg.form);
                }
                else
                {
                    rsp = await client.Get();
                }

                if (rsp.StatusCode == HttpStatusCode.OK)
                {
                    source.setCookies(rsp.Cookies);
                    temp = rsp.GetString();

                    if (string.IsNullOrEmpty(rsp.location) == false)
                    {
                        Uri uri = new  Uri(msg.url);
                        rsp.location = uri.Scheme + "://" + uri.Host + rsp.location;
                    }
                }
            }
            catch (Exception ex) {
                Util.log(source, "HTTP", ex.Message);
            }

            if (temp == null)
            {
                if (cache == null || cache.value == null)
                {
                    callback(-2, msg, null, rsp.location);
                }
                else
                {
                    callback(1, msg, cache.value, rsp.location);
                }
            }
            else
            {
                callback(1, msg, temp, rsp.location);
            }
        }
Exemplo n.º 22
0
 public KeyChainAliasCallback(HttpCallback callback)
 {
     _callback = callback;
 }
Exemplo n.º 23
0
        public RequestTask Post(string url, Dictionary <string, string> formFields, bool needUnZip, int timeout, HttpCallback callback)
        {
            UnityWebRequest request = UnityWebRequest.Post(url, formFields);

            if (timeout > 0)
            {
                request.timeout = timeout;
            }
            return(AddRequestTask(request, url, "", needUnZip, callback));
        }
Exemplo n.º 24
0
 /// <summary>
 /// get 同步请求
 /// </summary>
 /// <param name="url">请求地址</param>
 /// <param name="encoding">编码</param>
 /// <param name="parms">请求参数</param>
 /// <param name="headers">请求头部参数</param>
 /// <param name="callback">同步执行委托</param>
 public static void getSyncTo(string url, Encoding encoding, IDictionary <string, object> parms, IDictionary <string, object> headers, HttpCallback callback)
 {
     httpTo(false, "GET", null, encoding, url, parms, headers, callback);
 }
Exemplo n.º 25
0
Arquivo: Util.cs Projeto: noear/SiteD
        private static async void doHttp(SdSource source, HttpMessage msg, __CacheBlock cache, HttpCallback callback) {
            var encoding = Encoding.GetEncoding(msg.config.encode());

            AsyncHttpClient client = new AsyncHttpClient();
            client.UserAgent(msg.config.ua());
            client.Encoding(msg.config.encode());

            foreach (String key in msg.header.Keys) {
                client.Header(key, msg.header[key]);
            }

            string newUrl = null;
            if (msg.url.IndexOf(" ") >= 0)
                newUrl = Uri.EscapeUriString(msg.url);
            else
                newUrl = msg.url;

            client.Url(newUrl);

            string temp = null;

            AsyncHttpResponse rsp = null;
            try {
                if ("post".Equals(msg.config.method))
                    rsp = await client.Post(msg.form);
                else
                    rsp = await client.Get();

                if (rsp.StatusCode == HttpStatusCode.OK) {
                    source.setCookies(rsp.Cookies);
                    temp = rsp.GetString();

                    if (string.IsNullOrEmpty(rsp.location) == false) {
                        Uri uri = new  Uri(msg.url);
                        rsp.location = uri.Scheme + "://" + uri.Host + rsp.location;
                    }
                }
            }
            catch (Exception ex) {
                Util.log(source, "HTTP", ex.Message);
            }

            if (temp == null) {
                if (cache == null || cache.value == null)
                    callback(-2, msg, null, rsp.location);
                else
                    callback(1, msg, cache.value, rsp.location);
            }
            else
                callback(1, msg, temp, rsp.location);
        }
Exemplo n.º 26
0
 /// <summary>
 /// post表单 同步请求
 /// </summary>
 /// <param name="url">请求地址</param>
 /// <param name="encoding">编码</param>
 /// <param name="parms">请求参数</param>
 /// <param name="headers">请求头部参数</param>
 /// <param name="callback">同步执行委托</param>
 public static void postSyncAsForm(string url, Encoding encoding, IDictionary <string, object> parms, IDictionary <string, object> headers, HttpCallback callback)
 {
     httpTo(false, "POST", "application/x-www-form-urlencoded", encoding, url, parms, headers, callback);
 }
Exemplo n.º 27
0
 /// <summary>
 /// post json参数 异步请求
 /// </summary>
 /// <param name="url">请求地址</param>
 /// <param name="encoding">编码</param>
 /// <param name="parms">请求参数</param>
 /// <param name="headers">请求头部参数</param>
 /// <param name="callback">异步执行委托</param>
 public static void postAsyncAsJSON(string url, Encoding encoding, IDictionary <string, object> parms, IDictionary <string, object> headers, HttpCallback callback)
 {
     httpTo(true, "POST", "application/json", encoding, url, parms, headers, callback);
 }
Exemplo n.º 28
0
 private static void GetCertificate(HttpCallback callback)
 {
     KeyChain.ChoosePrivateKeyAlias(CrossCurrentActivity.Current.Activity, new KeyChainAliasCallback(callback),
                                    null, null, null, null);
 }
Exemplo n.º 29
0
        public RequestTask DownloadFile(string url, string saveFileFullPath, bool needUnZip, int timeout, HttpCallback callback, bool first = false, string matchMd5 = null)
        {
            if (string.IsNullOrEmpty(saveFileFullPath))
            {
                Debug.LogWarning("No fullFilePath, is there any error?");
            }

            UnityWebRequest request = UnityWebRequest.Get(url);

            if (timeout > 0)
            {
                request.timeout = timeout;
            }

            return(AddRequestTask(request, url, saveFileFullPath, needUnZip, callback, first, false, matchMd5));
        }
Exemplo n.º 30
0
        public RequestTask DownLoadAssetBundle(string url, string saveFileFullPath, int timeout, HttpCallback callback, bool first = true, string matchMd5 = null)
        {
            if (string.IsNullOrEmpty(saveFileFullPath))
            {
                Debug.LogError("No fullFilePath, cancel the downloading op");
                return(null);
            }

            UnityWebRequest request = UnityWebRequest.Get(url);

            if (timeout > 0)
            {
                request.timeout = timeout;
            }

            return(AddRequestTask(request, url, saveFileFullPath, false, callback, first, true, matchMd5));
        }
Exemplo n.º 31
0
        private Task OnRequestComplete(UnityWebRequest request, float startTime, bool needUnZip, string saveFileFullPath, HttpCallback callback, string matchMd5 = null)
        {
            Dictionary <string, object> dict = new Dictionary <string, object>();
            int respCode = (int)request.responseCode;

            dict.Add("status", respCode);

            bool succeed = !request.isHttpError && !request.isNetworkError;

            if (succeed)
            {
                float endTime = Time.realtimeSinceStartup;

                ulong size  = request.downloadedBytes;
                float speed = size / (endTime - startTime);

                dict.Add("size", size);
                dict.Add("speed", speed);

                string data = "";

                if (needUnZip)
                {
                    int ret = TryGetHttpData(request.downloadHandler.data, out data, true);
                    if (ret != IO_RESULT_SUCCESS)
                    {
                        data = "{\"code\":0,\"data\":\"data unzip fail\"}";
                    }
                }
                else
                {
                    // no need to save.
                    if (string.IsNullOrEmpty(saveFileFullPath))
                    {
                        data = request.downloadHandler.text;
                    }
                    else
                    {
                        byte[] downloadBytes = request.downloadHandler.data;

                        //compare md5
                        if (matchMd5 != null && StringUtils.BytesToMD5(downloadBytes) != matchMd5)
                        {
                            data = string.Format("{{\"code\":5,\"message\":\"{0}\"}}", "md5 not match");
                        }
                        else
                        {
                            Task threadTask = new Task((bytes) =>
                            {
                                SaveFile(saveFileFullPath, (byte[])bytes);
                            }, downloadBytes);

                            lock ( _ioTaskList )
                            {
                                IOTask newTask = new IOTask();
                                newTask.threadTask = threadTask;
                                newTask.callback   = (status) =>
                                {
                                    if (status == IOTask.RESULT_SUCCESS)
                                    {
                                        data = "ok";
                                        dict.Add("data", data);
                                    }
                                    else
                                    {
                                        StringBuilder sb = new StringBuilder();
                                        foreach (var ex in threadTask.Exception.InnerExceptions)
                                        {
                                            string s = ex.Message.Replace("\\", "\\\\");
                                            sb.Append(s.Replace("\"", "\\\""));
                                            sb.Append("\n");
                                        }
                                        data = string.Format("{{\"code\":0,\"message\":\"{0}\"}}", sb.ToString());
                                        Debug.LogError(data);

                                        dict.Add("data", data);
                                    }

                                    callback(dict);
                                };

                                _ioTaskList.Add(newTask);
                            }

                            DisposeWebRequesat(request);

                            return(threadTask);
                        }
                    }
                }

                dict.Add("data", data);
            }
            else
            {
                if (request.error != null)
                {
                    dict.Add("data", request.error);
                }
                else
                {
                    dict.Add("data", "request error, respCode:" + respCode.ToString());
                }
            }

            callback(dict);

            DisposeWebRequesat(request);

            return(null);
        }
Exemplo n.º 32
0
 public RequestTask Post(string url, string data, bool needUnZip, int timeout, HttpCallback callback)
 {
     return(Post(url, GetPostData(data), needUnZip, timeout, callback));
 }
Exemplo n.º 33
0
        /// <summary>
        /// http请求
        /// </summary>
        /// <param name="async">异步开启关闭</param>
        /// <param name="method">请求方法</param>
        /// <param name="contentType"></param>
        /// <param name="url">地址</param>
        /// <param name="parms">参数</param>
        /// <param name="headers">请求头</param>
        /// <param name="callback">异步执行方法</param>
        public static void httpTo(bool async, string method, string contentType, Encoding encoding, string url, IDictionary <string, object> parms, IDictionary <string, object> headers, HttpCallback callback)
        {
            string str;
            Func <string, string> selector = null;
            Func <string, string> func2    = null;

            if ((method.ToUpper() == "GET") && ((parms != null) && (parms.Count > 0)))
            {
                if (selector == null)
                {
                    selector = item => (item + "=" + parms[item]) ?? "";
                }
                str = string.Join("&", parms.Keys.Select <string, string>(selector));
                if (url.IndexOf("?") != -1)
                {
                    url = url + "?" + str;
                }
                else
                {
                    url = url + "&" + str;
                }
            }
            //System.Net.ServicePointManager.DefaultConnectionLimit = 10;
            //垃圾回收
            System.GC.Collect();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.Method = method;
            //request.Proxy = null;   //代理设为空
            request.KeepAlive = false;  //不保持连接
            if ((headers != null) && (headers.Count > 0))
            {
                foreach (string str2 in headers.Keys)
                {
                    request.Headers.Add(str2, Convert.ToString(headers[str2]));
                }
            }
            //编码方式
            Encoding enCode = Encoding.UTF8;

            if (encoding != null)
            {
                enCode = Encoding.Default;
            }

            if (method.ToUpper() == "POST")
            {
                request.ContentType = contentType;
                if ((parms != null) && (parms.Count > 0))
                {
                    byte[] bytes = null;
                    if (contentType.ToLower() == "application/x-www-form-urlencoded")
                    {
                        if (func2 == null)
                        {
                            func2 = item => (item + "=" + parms[item]) ?? "";
                        }
                        str   = string.Join("&", parms.Keys.Select <string, string>(func2));
                        bytes = enCode.GetBytes(str);
                    }
                    else if (contentType.ToLower() == "application/json")
                    {
                        bytes = enCode.GetBytes(JsonConvert.SerializeObject(parms));
                    }

                    if ((bytes != null) && (bytes.Length > 0))
                    {
                        request.ContentLength = bytes.Length;
                        Stream requestStream = request.GetRequestStream();
                        requestStream.Write(bytes, 0, bytes.Length);
                        requestStream.Close();
                    }
                }
            }

            //执行请求
            ExecHttpTo(async, enCode, request, callback);
        }
Exemplo n.º 34
0
        private int Raise(HttpCallback cb, HttpParser p)
        {
            if (cb == null)
                return 0;

            try {
                return cb (p);
            } catch (Exception e) {
                Console.WriteLine (e);

                RaiseOnError (p, e.Message, null, -1);
                return -1;
            }
        }
Exemplo n.º 35
0
        public void UploadFile(string url, string fullFilePath, bool needUnZip, int timeout, HttpCallback callback)
        {
            if (!File.Exists(fullFilePath))
            {
                Dictionary <string, object> dict = new Dictionary <string, object>();
                dict.Add("data", "file not exists !");
                dict.Add("status", IO_RESULT_FAIL);
                callback(dict);
                return;
            }

            byte[] fileData = null;

            //read file data
            Task threadTask = new Task(() =>
            {
                using (FileStream fileStream = new FileStream(fullFilePath, FileMode.Open))
                {
                    int dataLen = (int)fileStream.Length;
                    if (dataLen > 0)
                    {
                        fileData = new byte[dataLen];
                        fileStream.Read(fileData, 0, dataLen);
                    }
                }
            });

            //add to io task queue
            lock ( _ioTaskList )
            {
                IOTask newTask = new IOTask();
                newTask.threadTask = threadTask;
                newTask.callback   = (status) =>
                {
                    if (status == IOTask.RESULT_SUCCESS)
                    {
                        if (fileData == null)
                        {
                            Dictionary <string, object> dict = new Dictionary <string, object>();
                            dict.Add("data", "file data is empty!");
                            dict.Add("status", IO_RESULT_FAIL);
                            callback(dict);
                        }
                        else
                        {
                            UnityWebRequest request = UnityWebRequest.Put(url, fileData);
                            if (timeout > 0)
                            {
                                request.timeout = timeout;
                            }
                            AddRequestTask(request, url, "", needUnZip, callback);
                        }
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (var ex in threadTask.Exception.InnerExceptions)
                        {
                            sb.Append(ex.Message);
                            sb.Append("\n");
                        }

                        string data = string.Format("{{\"code\":0,\"message\":\"read error:{0}\"}}", sb.ToString());

                        Dictionary <string, object> dict = new Dictionary <string, object>();
                        dict.Add("data", data);
                        dict.Add("status", IO_RESULT_FAIL);

                        callback(dict);
                    }
                };

                _ioTaskList.Add(newTask);
            }
        }