ShookOnesPtII
#programowanie #csharp #siszarp #wordpress #logowanie

Jak zabezpieczyć ten kod przed wywalaniem aplikacji? Coś oprócz Try {} Catch{} (brzydki kod).

http://pastebin.com/t5kdpJb8

Jest to kawałek metody służącej do logowania na jakikolwiek blog WordPress.

Wywaliło mi przy TcpClient client = new TcpClient(fulladdress, 80). Komunikat związany z timeoutem.
2
  • Najlepsze
  • Wszystkie komentarze
japer
Nie da się inaczej. Możesz zredukować pętle, że na początku poza pętlą przygotowujesz requesta, a potem pętla i przechwycasz. Jedyne rozwiązanie :D
2
patrolez
@ShookOnesPtII: no po to ci wyjątki wymyślili, żebyś je używał :> Metoda niech wywala wyjątek jeżeli timeout :>

Piszę to ogólnie, bo nie znam C#, ale no po to wymyślili to cudeńko jak wyjątki (które są w każdym poważnym języku programowania), żeby życie ułatwić :>
1
Yahoo_
@ShookOnesPtII: try...catch to piękny kod w porównaniu do tego kilometrowego stringa z 6. linijki :P
1
kielonek
@ShookOnesPtII: nie ma to jak narzekac na to ze try catch brzydki, a ta 6ta linijka to pozal się boze
1
G.....t
G.....t
@ShookOnesPtII: używanie sleep to zły pomysł
1
G.....t
G.....t
@ShookOnesPtII: nie musi go tam być, jest zbędny ;-)
1
Yahoo_
@ShookOnesPtII:

Najprostsze sprawa to skorzystać z StringBuildera. Generalnie powinno się unikać "dodawania" stringów. Można też np. napisać jakieś extension method np. public static StringBuilder AppendHeader(this StringBuilder sb, string header, string value) albo w ogóle zamknąć requesta w jakiejś klasie jak będziesz z niego często korzystał. Zasada jest taka - pomyśl jakbyś chciał z czegoś korzystać, a potem napisz kod, który Ci to umożliwi :).
1
japer
@ShookOnesPtII: HttpWebRequest to ty używaj
1
japer
@ShookOnesPtII: webclientem możesz uploadować wartości przez metodę post
1
japer
@ShookOnesPtII: btw używaj Encoding.ASCII a nie tworzysz klasę jakoś dziko :P
1
japer
a jak łapać błędy to tylko wyjątki. Inaczej się nie da.

1
japer
@ShookOnesPtII: napieprzasz tak, aż zazębi? O.O

1
japer
@ShookOnesPtII: to polecam pętle for. gdy złapie wyjątek to dajesz continue. Najlepiej łap wyjątki typowo lecące z socketa
1
ShookOnesPtII
@japer: O, o tym nie pomyślałem. Dobra, dzięki za pomoc. Ważne, że kod działa i loguje ;).
1
ShookOnesPtII
@patrolez: Ale kod brzydki... :(
0
ShookOnesPtII
@Yahoo_: @kielonek: Dobra, zrobiłem traj kaczem. Heh.
0
ShookOnesPtII
@Godlike_Atheist: To akurat w osobnym wątku się robi, więc nie przeszkadza. W sumie nie wiem czy ten Sleep tam musi być czy nie... Jeżeli networkStream.Read(buffer, 0, buffer.Length); czeka aż dane się "załadują", to Sleep jest zbędny.
0
ShookOnesPtII
@Godlike_Atheist: @kielonek: @Yahoo_: Jak byście podzielili ten kod z 6 linijki, żeby to ładnie wyglądało :>?
0
ShookOnesPtII
@japer: Niestety, nie da się tego użyć przy logowaniu do Wordpress (jakiś bug z ciastkami) ;). Jeżeli już, to lepiej WebClient z obsługą ciastek.
0
ShookOnesPtII
@japer: Wiem, no o to mi chodzi. Ani httpwebrequest ani webclientem NIE DA SIĘ zalogować na wordpressie. Trza na socketach. Wtedy czytam ciastka i zapisuję ręcznie do cookiecontainer.
0