HTTPWebRequest działa jednorazowo

0

Witam łączę się przy pomocy HTTPWebRequest ze źródłem danych które pobieram w ten sposób najpierw logowanie i pobieranie.

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

            var cookies = new CookieContainer();
            ServicePointManager.Expect100Continue = false;

            string loginRequest = textBox14.Text.ToString();
            string identity = textBox15.Text.ToString();
            string credential = textBox16.Text.ToString();
            string dataRequest = textBox17.Text.ToString();

            // stworzenie obiektu HTTPWebRequest wraz z kontenerem plików cookie
            var request = (HttpWebRequest)WebRequest.Create(loginRequest);
            request.CookieContainer = cookies;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            // ustawienie requesta z żadaniem identity credential i submit
            using (var requestStream = request.GetRequestStream())
            using (var writer = new StreamWriter(requestStream))
            {
                writer.Write("identity="+identity+"&credential="+credential+"&submit=Zaloguj");
            }

            var responseStream = request.GetResponse().GetResponseStream();
            var reader = new StreamReader(responseStream);

            string sURL;
            sURL = dataRequest;

            var wrGETURL = (HttpWebRequest)WebRequest.Create(sURL);
            wrGETURL.CookieContainer = cookies;          
            WebProxy myProxy = new WebProxy("serwerproxy", 80);
            myProxy.BypassProxyOnLocal = true;

            wrGETURL.Proxy = WebProxy.GetDefaultProxy();

            Stream objStream;

            objStream = wrGETURL.GetResponse().GetResponseStream(); // tutaj wywala błąd

            StreamReader objReader = new StreamReader(objStream);
 

Następnie po powtórnym wykonaniu tego fragmentu kodu program wiesza się na chwile i wywala błąd tam gdzie napisałem, bład to upłynął limit czasu żądania. Na razie rozwiązałem to w ten sposób, że program jest restartowany po zakończeniu pobierania, wtedy wszystko wraca do normy. Jednak w tej samej instancji programu nie da się drugi raz pobrać tylko raz, np. klikam przycisk start, ściąga się i następnie drugi raz start i już błąd. Nie wiem co jest grane.

0
  1. podaj jaki blad wyskakuje
  2. sprawdzales w google pierwsze wyniki wklejajac ten blad?
  3. po co chcesz wolac to samo drugi raz?
0

Witam,

  1. Wyskakuje taki błąd Additional information: Upłynął limit czasu operacji
  2. Tak ale to chyba nic z sql serverem bo dotyczy to linijki z obiektem HttpWebRequest
  3. Szef tak kazał i ma być możliwość cyklicznego samoczynnego uruchamiania tego skryptu np. co 30 minut. Ja na razie ominąłem ten problem poprzez restart programu
0
  1. zostaje wyrzucony wyjatek. Zlap go i zobacz co dokladnie zawiera
0

Może być tak, że nie zwalniasz zasobów w odpowiedzi i trzyma Ci połączenie. Proponuję sprawdzić to:

Odbierz HttpWebresponse tutaj

var responseStream = request.GetResponse().GetResponseStream();

zmień na:

var response = (HttpWebResponse) request.GetResponse();
var responseStream = response.GetResponseStream();

(kod pisany z pamięci)

Potem jak skończysz to zwalniaj response przez wywołanie Dispose. Ewentualnie użyj using.

Mam nadzieję, że to pomoże.

1 użytkowników online, w tym zalogowanych: 0, gości: 1