dodání ihned! nové
Hledáme programátora do rostoucího týmu ITnetwork.cz, 100% home office, 100 flexibilní pracovní doba. Více informací
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
BF

Diskuze: jak zjistit typ chyby při načítání webových stránek?

Aktivity
Avatar
jenda
Člen
Avatar
jenda:4.1.2017 9:16

Načítám stránku do webbrowser. Pokud je načtení v pořádku, program mi šlape. Potíž je, když třeba stránka neexistuje. Program se mi nedostane do document completed a zamrzne. Jak zjistím typ chyby načítání stránek, abych to mohl ošetřit?

 
Odpovědět
4.1.2017 9:16
Avatar
Odpovídá na jenda
Marian Benčat:4.1.2017 10:25

Málo informací. Jaký je to framework a co znamená zamrzne?

Nahoru Odpovědět
4.1.2017 10:25
Totalitní admini..
Avatar
jenda
Člen
Avatar
jenda:4.1.2017 10:44

Nevím, co je framework. Dělám ve visual studiu 2015. Mně stačí vědět, jak zjistím, jakou chybovou hlášku ta načítaná stránka vrátí. Pokud žádnou, tak najede document completed a je to v pořádku. Pokud však stránka vyhodí chybu (např. stránka nenalezena), tak to do document completed neskočí. Takže já bych potřeboval vědět, jak odečtu, v jakém stavu ta stránka skončila, tedy jakou chybu vyhodila.

 
Nahoru Odpovědět
4.1.2017 10:44
Avatar
Odpovídá na jenda
Marian Benčat:4.1.2017 11:24

No, jako jestli je to MVC, WebForms, nebo neco podobneho?

Nahoru Odpovědět
4.1.2017 11:24
Totalitní admini..
Avatar
jenda
Člen
Avatar
jenda:4.1.2017 11:32

Aha :-) Je to Windows Forms Aplication

 
Nahoru Odpovědět
4.1.2017 11:32
Avatar
Odpovídá na jenda
Neaktivní uživatel:4.1.2017 12:38

Mrkni se na metodu CreateSink(), pomocí ní se dostaneš k metodám a událostem které nejsou přístupné z interface WebBrowseru (v podstatě si tak rozšíříš tenhle wrapper).
K dispozici tak budeš mít mimo jiného i událost NavigateError.

Všechno, včetně ukázky je na WebBrowser.Cre­ateSink Method ()

Nahoru Odpovědět
4.1.2017 12:38
Neaktivní uživatelský účet
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
jenda
Člen
Avatar
jenda:4.1.2017 17:12

Děkuji za odpověď. Bohužel je to na mne příliš složité :-((( Já jsem amatér samouk. Co z toho CreateSink si mám zkopírovat do svého projektu?

 
Nahoru Odpovědět
4.1.2017 17:12
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na jenda
vajkuba1234:4.1.2017 23:25

Spise by sis asi mel prvne projit zaklady a postupne si pridavat obtiznost, a ne se hned poustet do neceho, cemu vlastne ani nerozumis. Neni to mysleno zle, ale jako rada. Jinak zkus sem dat svuj kod, ktery zatim mas...

Nahoru Odpovědět
4.1.2017 23:25
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
jenda
Člen
Avatar
jenda:5.1.2017 6:52

Já beru programování jinak, než zkušení programátoři. Pro mě je to pouhý prostředek, jak se dostat k nějakému výsledku. Takže nepotřebuji mít dokonalý kód, ošetřené všechny chyby atd. Jak mám výsledek, většinou už program nikdy nepoužiji. Nemusím se k výsledku dostat elegantně, rychle, s pěkným uživatelským prostředím atd. Klidně pustím program na celou noc, ať si to chroupe a mám ráno výsledek. Přitom šikovný programátor by udělal program, který to schroupne za pár minut. Ale mi jde fakt jen o ten výsledek. Programuji stylem puzzle. Skládám hotové kousky programů k sobě, přičemž nemusím rozumět detailům a tomu, jak daný kousek funguje.

V daném případě potřebuji zadat balík webových adres a získat adresy, kam jsou přesměrovávány.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace presmerovani
{
    public partial class Form1 : Form
    {
        string cesta;
        int pocitadlo = 0;
        List<string> adresy;
        List<string> vysledek;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            using (StreamReader sr = new StreamReader(@"D:\zadani.csv", System.Text.Encoding.Default))
            {
                string s;
                adresy = new List<string>();
                vysledek = new List<string>();
                while ((s = sr.ReadLine()) != null)
                {
                   adresy.Add(s);
                }
            }
            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            webBrowser1.Size = new Size(this.Size.Width - 16, this.Size.Height - 100);
            if (pocitadlo + 1 <= adresy.Count())
            {
                if (adresy[pocitadlo].Contains("www"))
                    {
                    vysledek.Add(adresy[pocitadlo]);
                    using (StreamWriter sw = new StreamWriter(@"D:\vysledek.csv", true, System.Text.Encoding.Default))
                    {
                        sw.WriteLine(adresy[pocitadlo]);
                    }
                }
                else
                {
                    webBrowser1.Navigate(adresy[pocitadlo]);
                    timer1.Enabled = false;

                }
                pocitadlo++;
            }
            else
            {
                timer1.Enabled = false;
                MessageBox.Show("Hotovo");
            }


            //timer1.Enabled = false;
        }

        private void webBrowser1_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //if(webBrowser1.Url.ToString() == adresy[pocitadlo -1])
            //{
            //    timer1.Enabled = false;
            //}
            //else
            //{
            //    textBox1.Text = webBrowser1.Url.ToString();
            //    vysledek.Add(textBox1.Text);
            //    using (StreamWriter sw = new StreamWriter(@"D:\vysledek.csv", true, System.Text.Encoding.Default))
            //    {
            //        sw.WriteLine(textBox1.Text);
            //    }
            //        timer1.Enabled = true;
            //}

        }

        private void button1_Click(object sender, EventArgs e)
        {


            using (StreamWriter sw = new StreamWriter(@"D:\vysledek.csv", false, System.Text.Encoding.Default))
            {
                foreach (string polozka in vysledek)
                {
                    sw.Write(polozka);
                }
            }

        }

        private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            //if (webBrowser1.Url.ToString() == adresy[pocitadlo - 1])
            //{
            //    timer1.Enabled = false;
            //}
            //else
            //{
            //    textBox1.Text = webBrowser1.Url.ToString();
            //    vysledek.Add(textBox1.Text);
            //    timer1.Enabled = true;
            //}


                if (webBrowser1.Url.ToString() == adresy[pocitadlo - 1])
                {
                    timer1.Enabled = false;
                }
                else
                {
                    textBox1.Text = webBrowser1.Url.ToString();
                    vysledek.Add(textBox1.Text);
                    using (StreamWriter sw = new StreamWriter(@"D:\vysledek.csv", true, System.Text.Encoding.Default))
                    {
                        sw.WriteLine(textBox1.Text);
                    }
                    timer1.Enabled = true;
                }


        }
    }
}
 
Nahoru Odpovědět
5.1.2017 6:52
Avatar
David Klouček:7.1.2017 20:29

Nebyl by na tvuj styl práce lepší skriptovací jazyk? Python, PHP, PERL..

 
Nahoru Odpovědět
7.1.2017 20:29
Avatar
jenda
Člen
Avatar
jenda:7.1.2017 20:39

Aha, nevím :-) Jsem rád, že trochu umím C# a VBA.

 
Nahoru Odpovědět
7.1.2017 20:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.