Exemple #1
0
        /// <summary>
        /// Perform HttpRequest.
        /// </summary>
        /// <param name="http_request"></param>
        /// <param name="send_cookies"></param>
        /// <returns></returns>
        public bool Do(HttpRequest http_request, bool send_cookies)
        {
            if (AutoRotateProxy)
            {
                ChangeProxy();
            }

            int  attempt_count = 0;
            bool rc;

            while (true)
            {
                attempt_count++;
                rc = _do(http_request, send_cookies);
                if (rc)
                {
                    break;
                }
                if (Proxy != null)
                {
                    if (web_routine_status != WebRoutineStatus.EXCEPTION &&
                        HWResponse.StatusCode != HttpStatusCode.ProxyAuthenticationRequired &&
                        HWResponse.StatusCode != HttpStatusCode.GatewayTimeout &&
                        HWResponse.StatusCode != HttpStatusCode.BadGateway
                        )
                    {
                        break;
                    }

                    Proxies.Delete(Proxy);
                    if (attempt_count >= Properties.Proxy.Default.MaxAttemptCountWithNewProxy)
                    {
                        Log.Error("Attempt quota exeeded: " + attempt_count.ToString());
                        break;
                    }
                    ChangeProxy();
                }
                if (attempt_count >= MaxAttemptCount)
                {
                    break;
                }
                Log.Write("Attempt #: " + attempt_count.ToString());
            }
            return(rc);
        }
Exemple #2
0
        void close()
        {
            lock (This_)
            {
                BotCycle.Abort();

                if (This.items_xtw != null)
                {
                    This.items_xtw.WriteEndElement();
                    This.items_xtw.WriteEndDocument();
                    This.items_xtw.Close();
                }

                if (This.input_item_queue_name2input_item_queues.Count > 0)
                {
                    if (This.IsUnprocessedInputItem)
                    {
                        This.set_session_state(SessionState.ABORTED);
                    }
                    else if (This.IsItem2Restore)
                    {
                        This.set_session_state(SessionState.UNCOMPLETED);
                    }
                    else
                    {
                        This.set_session_state(SessionState.COMPLETED);
                    }
                }
                This.workflow_xtw.WriteEndElement();
                This.workflow_xtw.WriteEndDocument();
                This.workflow_xtw.Close();

                try
                {
                    CustomizationApi.SessionClosing();
                }
                catch (Exception e)
                {
                    LogMessage.Error(e);
                }

                try
                {
                    if (Closing != null)
                    {
                        Closing.Invoke();
                    }
                }
                catch (Exception e)
                {
                    LogMessage.Error(e);
                }

                InputItemQueue.Close();
                FileWriter.ClearSession();
                Cache.ClearSession();
                Proxies.ClearSession();
                WebRoutine.ClearSession();
                Log.Main.Write("Closing session.");
                Cliver.Log.ClearSession();

                This_ = null;
            }
        }
Exemple #3
0
 ///// <summary>
 ///// get next proxy from proxy queue
 ///// </summary>
 public void ChangeProxy()
 {
     this.Proxy = Proxies.Next();
 }