Diskuze: [WP8.1] HTTP client - neaktuální response z webu

C# .NET .NET (C# a Visual Basic) [WP8.1] HTTP client - neaktuální response z webu American English version English version

Avatar
Matyáš Černohous (Matesak):

Zdravím, mám WP 8.1 aplikaci, kde pomocí WEB requestů a JSONu komunikuji s databází. Vše fungovalo v pohodě, ale teď jsem uploadnul PHP scripty pro komunikaci na jiný webhosting a mám problém s daty. Nevím jestli to je aplikací, nebo serverem.

V aplikaci nahrávám data ze stránky pomocí Http requestu

public async void Load()
             string t = txtUser.Text;

            string url = "http://mojestranka.cz/deleteThis/getAllTasks.php?id="+t;

            HttpClient client = new HttpClient();
            var response = await client.GetStringAsync(new Uri(url));
            //var result = await response.Content.ReadAsStringAsync();
            string jsonString = response.ToString();
             .....
            }

data vypadají takhle:

[{"Predmet":"Posudek","Datum":"21.6.2015","Splneno":"Ne","ZbyvaDni":"37","Pripomenuti":"5","Sdileno":"gymla"},{"Predmet":"Abcddd","Datum":"16.5.2015","Splneno":"Ne","ZbyvaDni":"1","Pripomenuti":"5","Sdileno":""}]

PROBLÉM nastává když upravím úkol a odešlu požadavek na refresh přehledu. Chci dostat upravený výpis - např. Posudek změním na Posudek1.

Zavolám metodu

Load()

ale v

var response = await client.GetStringAsync(new Uri(url));

dostávám pořád tu starou hodnotu (když třeba úkol odstraním, tak se mi stejně načte i když je pryč. Když se na kouknu přímo na ten JSON výpis na webu, tak tam se změna projeví hned, takže nevím proč aplikace pořád načítá staré hodnoty. Změna se projeví až potom co aplikaci vypnu a zapnu).

Nemůže to být, že aplikace to má uložený někde v catche ?

Díky

 
Odpovědět 15.5.2015 12:29
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
patrik.valkovic:

Z netu jsem vyčetl, že WP skutečně cachuje (a to dost agresivně).
Jedno řešení je použít hlavičku "IsModifiedSince"
Dalším řešením by bylo přidávat náhodný řetězec (založený třeba na datu) jako další parametr.
Poslední, co jsem našel, by bylo nastavit "Cache-control"

Více se dozvíš tady
http://stackoverflow.com/…dows-phone-8

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 15.5.2015 12:38
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Matyáš Černohous (Matesak):

Teď jsem si o tom něco taky přečetl a pokud jsem to správně pochopil, tak z cach paměti se to bere jen tehdy, pokud je ten daný řetězec identický s tím, který byl už volaný ?
Takže stačí připojit nějaký identický parametr, nebo modifikovat hlavičku, jak je psané na Stack ?

 
Nahoru Odpovědět 15.5.2015 12:48
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
patrik.valkovic:

Ano, cachuje se ti konkrétní URL adresa. Když tedy za adresu přidáš náhodný řetězec (který musí být jedinečný), dotaz se ti nezacachuje.
Jednodušší by asi bylo přidat na konec náhodný řetězec. Technicky správně bys měl ale použít hlavičku (i když bude asi komplikovanější). Rozhodnutí je na tobě ;-)

Nahoru Odpovědět 15.5.2015 12:55
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Matyáš Černohous (Matesak):

Díky :) - asi zvolím ten náhodný řetězec. Aplikaci budu prezentovat jako maturitní práci a pak už se k ní nehodlám vracet, takže to budu řešit jednodušší metodou :D

 
Nahoru Odpovědět 15.5.2015 12:59
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
patrik.valkovic:

Maturitní práci? :D To děláš brzo teda.... :D

Nahoru Odpovědět 15.5.2015 13:00
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Matyáš Černohous (Matesak):

Né, já už jí mám hotovou cca měsíc, ale teď jsem jí nahrával na WP Store a hlavně jsem měnil ten hosting, takže jsem to musel otestovat jestli to jede - nejelo :D By byla sranda, kdybych tam v úterý nastoupil s aplikací, která je funkční na 50% -_- :D

 
Nahoru Odpovědět 15.5.2015 13:15
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 7 zpráv z 7.