C# VS Xamarin http lekérés timeout-tal Androidon

C# VS Xamarin http lekérés timeout-tal Androidon
2016-11-17T06:40:44+01:00
2017-06-11T22:08:45+02:00
2022-10-15T23:16:32+02:00
mandula
Abban kérném a segítségeteket, hogy hogyan lehet háttérfolyamatként elindítani timeout-os http lekérést várakozással?
Androidos mobilra, Visual Studio Xamarin-nal fejlesztve.

Le szeretném tesztelni, hogy "elérhető-e a szerver" a megadott IP címen,
de ha 300ms alatt nem válaszol, akkor megnézi 2. alternatívnak beállítottat.
> Ha valamelyik működik, akkor elindítja a SERVICE-t, ahol folyamatosan küldözgetne időzítve.

Már szétolvastam mindent, most a Task.Run szintaktisánál vagyok elakadva...
Ez így egyáltalán nem jó:

private static bool Send(string url_txt, int waitMs) { MainActivity.update("URL: " + url_txt); if (!URLUtil.IsValidUrl(url_txt)) return false; using (var cts = new CancellationTokenSource(TimeSpan.FromMilliseconds(1000))) //waitMs))) { var token = cts.Token; token.ThrowIfCancellationRequested(); Task.Run(DownloadStringAsync(url_txt, token).ConfigureAwait(false)) ; /* Task.Run (async delegate { await DownloadStringAsync(url_txt, token).ConfigureAwait(false) (() => { }); }); */ } string o = ""; //await CallAsync( url_txt, waitMs ); if ( ! o.Equals("OK")) { MainActivity.update("Not OK. " + o); return false; } return true; }
Mutasd a teljes hozzászólást!
Egyenlőre async task -ként írtam meg, hogy "lejárjon". De még tesztelnem kell.
Ha az nem válik be, akkor ez is egy ígéretes megoldás:
stackoverflow TimeOut link...
... főleg, mert ez tud olyat, hogy ha még "csöpög" az adat, csak lassú a kapcsolat, akkor tovább vár.
 (azért írom ide, mert nem akarom, hogy törlődjön a Topic)
Mutasd a teljes hozzászólást!

  • Az egyik fő problémám ez a cikk ... ami arról ír, hogy egyáltalán nem működik normálisan a Timeout :(

    A másik, hogy Android 5.0+ felett már nem futtatható HTTP lekérés a fő szálon.
    Tehát úgy kellene háttérfolyamatot indítani, hogy megvárja, amíg befejezi.
    Mutasd a teljes hozzászólást!
  • nos... a timeout-rol nem tudok nyilatkozni, de a masik problemat en ugy oldanam meg, hogy a elinditom a hatterszalat es az esemenykent visszaszol (callback) hogy elerheto a szerver, vagy eppen azt, hogy nem elerheto

    a fo szalon http-t inditani nem egeszseges, pont a timeout miatt, addig gyak. all az alkalmazas, semmire sem reagal.

    esetleg nezd meg ezt
    Check Internet connectivity
    Mutasd a teljes hozzászólást!
  • <OFF>
    Kedves Péter!
     Azt hittem, kicsit pörgősebb lesz ez a topik, és mielőtt válaszolok már meg is oldja valaki.
    Mivel PONT a timeout itt az egyik leglényegesebb szempont, így sajnos az általad leírtaknak nem tudom hasznát venni. (Főleg nem a "ping"-eléses linknek, mert nem arra van szükség. Amúgy már én is megtaláltam ezt az oldalt, és lekövettem minden ott levő linket is !)
    Mindenesetre köszönöm, hogy legalább Te egyedül vetted a fáradságot és válaszoltál ;)
    Mutasd a teljes hozzászólást!
  • igazan nincs mit, tudom milyen frusztralo ha az ember nem jut tovabb..

    esetleg nezd meg ezt
    HttpWebRequest Class - Xamarin
    elmeletileg o tud visszaadni timeout tipusu hibat. Az altalad linkelt cikkben httpclient-van.. Lehet masik uton kellene elinduljal es eldobd az egeszet :)

    javaslom csinalj egy teljesen ures projektet es probalkozz vele elsore ott.. :) nekem altalaban bevalik, ha nagyon elakadok valamivel.

    egy GET hivas egy endpointra elegendo kell legyen hogy megtudd, mukodik-e az oldal.. jogos h a ping nem feltetlen jarhato ut, mert adott esetben tiltva van..

    java fejleszto vagyok, ugyhogy limitaltak az ilyen iranyu ismereteim, de abban biztos vagyok hogy kell legyen megoldas.
    Mutasd a teljes hozzászólást!
  • Egyenlőre async task -ként írtam meg, hogy "lejárjon". De még tesztelnem kell.
    Ha az nem válik be, akkor ez is egy ígéretes megoldás:
    stackoverflow TimeOut link...
    ... főleg, mert ez tud olyat, hogy ha még "csöpög" az adat, csak lassú a kapcsolat, akkor tovább vár.
     (azért írom ide, mert nem akarom, hogy törlődjön a Topic)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd