Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:31.8.2013 13:10

Ahoj, mám takový menší problém s WebClientem, běžně přes něj stahuji obsah web stránek, ale nyní jsem narazil na problém kde, i přes obalení try-catch blokem mi to stejně zastaví program (viz. obr)

Odpovědět
31.8.2013 13:10
Mo8ilε 15 Ѐλđ
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Jan Vargovský:31.8.2013 13:13

Zrovna od moderátora C# fóra, bych čekal že umí googlovat.

Anyway ...
http://social.msdn.microsoft.com/…04-not-found

http://stackoverflow.com/…file-request

EDIT: jen taková poznámka, že 404 je "stránka nenalezena" takže máš chybnou adresu

Editováno 31.8.2013 13:14
 
Nahoru Odpovědět
31.8.2013 13:13
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 13:16

To si snad děláš srandu, ne? Co tam pohledává ten bool error? Hezky se ho zbav. Fuj, to jsem se lekl.

Nahoru Odpovědět
31.8.2013 13:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Jan Vargovský
David Hartinger:31.8.2013 13:17

On je myslím moderátor inkubátoru ;-)

Nahoru Odpovědět
31.8.2013 13:17
New kid back on the block with a R.I.P
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na David Hartinger
Jan Vargovský:31.8.2013 13:19

Aha, to by to vysvětlovalo. Já měl zato, že je moderátor C# :D

 
Nahoru Odpovědět
31.8.2013 13:19
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Theodor Johnson:31.8.2013 13:28

Tak jsem to zkusil znovu (asi po 4.) se stejnou url adresou a už mi chybu nevyhodilo, ale mě ani tak nešlo o tu chybu, ale proč mi to zastavilo když tam mám try-catch blok

Nahoru Odpovědět
31.8.2013 13:28
Mo8ilε 15 Ѐλđ
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:31.8.2013 13:29

ten bool zajišťuje, že pokud se to nepovede stáhnout tak to nebude pokračovat, ale přeskočí to všechno co vyžaduje mít stažený ten string

Nahoru Odpovědět
31.8.2013 13:29
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 13:32

Abych nebyl jen destruktivní. Tady jsem ti přepsal ten kousek, který vidím na obrázku. Proměnná error je v daném případě fakt zbytečná.

tracklist.Clear();
foreach (string s in uris) {
    try {
        string xmlFile = webClient.DownloadString(...));
        XmlDocument _doc = new XmlDocument();
        _doc.LoadXML(xmlFile);
    } catch (WebException) {
        Console.Error.WriteLine("Chybička se vloudila");
    }
}

V podstatě je zbytečná i proměnná xmlFile, ale to už záleží na vkusu.

Nahoru Odpovědět
31.8.2013 13:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 13:35

To přeskočení přece zajistí už try..catch.

Nahoru Odpovědět
31.8.2013 13:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Kit
Jan Vargovský:31.8.2013 13:38

Nevím jak to je v Jave, ale v C# rozhodně ne.

 
Nahoru Odpovědět
31.8.2013 13:38
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:31.8.2013 13:39

právě že sem tam mi vyhodí chybu i jiný řádek, a to já se snažím vyřešit, ne jen že když to vyhodí chybu tak se to neprovede, pokud bych to tak udělal, mohlo by se taky stát že výsledek hledání by byl nula výsledků

Nahoru Odpovědět
31.8.2013 13:39
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 13:43

Na tom snímku se špatně rozeznává, co s tím pak dál děláš, ale stejně jsem přesvědčen, že proměnná error je tam naprosto zbytečná a jen zhoršuje čitelnost programu, ve kterém se pak špatně hledají chyby.

Nahoru Odpovědět
31.8.2013 13:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:31.8.2013 13:48

řekl bych že v tomhle

var id = _doc.SelectSingleNode("//id");
var duration = _doc.SelectSingleNode("//duratoion");
var tag_list = _doc.SelectSingleNode("//tag-list");
var streamable = _doc.SelectSingleNode("//streamable");
var genre = _doc.SelectSingleNode("//genre");
var title = _doc.SelectSingleNode("//title");
var description = _doc.SelectSingleNode("//description");
var original_format = _doc.SelectSingleNode("//original-format");
var permalink_url = _doc.SelectSingleNode("//permalink-url");
var artwork_url = _doc.SelectSingleNode("//artwork-url");
var waveform_url = _doc.SelectSingleNode("//waveform-url");
var stream_url = _doc.SelectSingleNode("//stream-url");
var playback_count = _doc.SelectSingleNode("//playback-count");
var download_count = _doc.SelectSingleNode("//download-count");
var favouriting_count = _doc.SelectSingleNode("//favoritings-count");
var comment_count = _doc.SelectSingleNode("//comment-count");
var user_name = _doc.SelectSingleNode("//user");

se líp hledá chyba bez try-catche, protože mi VS zvýrazní ve kterém řádku mám chybu

Nahoru Odpovědět
31.8.2013 13:48
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 13:48

Podobně nepochopitelné je i proč dáváš do xmlFile hodnotu String.Empty. To je přece naprosto zbytečné přiřazení, které jen zdržuje a znepřehledňuje program.

Nahoru Odpovědět
31.8.2013 13:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 13:51

A jak to s tím souvisí? Tohle je přece úplně jiný případ z jiné vrstvy.

Nahoru Odpovědět
31.8.2013 13:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:31.8.2013 13:57

Tak jsem to přepsal:

XmlDocument _doc = new XmlDocument();
_doc.LoadXml(webClient.DownloadString(s + clientTemplate + client_id));

ale pořád se může stát že mi server vrátí 404 a alespoň vím že try-catch je v tomto případě zbytečný

Nahoru Odpovědět
31.8.2013 13:57
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 14:04

Ta výjimka ti probublá do vyšší vrstvy.

Případně to můžeš vyřešit třeba takto:
http://stackoverflow.com/…can-i-skip-t

Nahoru Odpovědět
31.8.2013 14:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:31.8.2013 14:11

Zkusil jsem to tam přidat, a uvidím až zase nastane 404ka jestli to pomohlo

Nahoru Odpovědět
31.8.2013 14:11
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 14:20

Tak si tam nějaký neexistující odkaz přidej, ať víš, jak se to bude chovat.

Nahoru Odpovědět
31.8.2013 14:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Tvůrce
Avatar
Jan Vargovský:31.8.2013 14:24

Nevím kdo mi dal i--, ale opravdu to ten kód nepřeskočí (mluvím o tom, co nám ukázal jako první) protože nevyvolává žádnou vyjímku, takže program normalně bude postupovat dál.

 
Nahoru Odpovědět
31.8.2013 14:24
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Kit
Theodor Johnson:31.8.2013 14:29

Už vím jak,

try { _doc.LoadXml(webClient.DownloadString(s)); }
                catch (WebException e)
                {
                    if (e.Status == WebExceptionStatus.ProtocolError)
                    {
                        HttpWebResponse resp = (HttpWebResponse)e.Response;
                        if (resp.StatusCode == HttpStatusCode.NotFound)
                        {
                            MessageBox.Show("Not found");
                        }
                        else if (resp.StatusCode == HttpStatusCode.Unauthorized)
                        {
                            MessageBox.Show("Unauthorized");
                        }
                    }
                }

mi zastaví program (nezobrazí MessageBox) s chybou:

The remote server returned an error: (401) Unauthorized.
Nahoru Odpovědět
31.8.2013 14:29
Mo8ilε 15 Ѐλđ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Kit:31.8.2013 14:37

Mně při 404 vyskočí výjimka. Chová se to správně.

Nahoru Odpovědět
31.8.2013 14:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Theodor Johnson
Kit:31.8.2013 14:44

To už vypadá lépe. Ještě trochu zlepšit úpravu kódu, aby se to dalo číst...

Nahoru Odpovědět
31.8.2013 14:44
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 23 zpráv z 23.