Sto cercando di raccogliere dati statistici dal cambio valuta di Roblox per l'analisi. Pertanto, ho bisogno di dati aggiornati invece di un risultato memorizzato nella cache. Tuttavia, sembra che non importa quello che faccio, il risultato è ancora memorizzato nella cache. Sembra che l'opzione più intuitiva, setUseCaches()
, non abbia avuto effetto e l'impostazione dell'intestazione manualmente come Cache-Control: no-cache
non sembra funzionare neanche. Ho ispezionato l'intestazione di Cache usando Fiddler2 e ho visto che il suo valore era Cache-Control: max-age=0
, ma non sembrava modificare il comportamento del programma. Qui ci sono le rilevanti porzioni di codice:Java - HttpUrlConnection restituisce ogni volta la risposta memorizzata nella cache
URL:
richiesta GET:
URLConnection socket = new URL(URL).openConnection();
socket.setUseCaches(false);
socket.setDefaultUseCaches(false);
HttpURLConnection conn = (HttpURLConnection)socket;
conn.setUseCaches(false);
conn.setDefaultUseCaches(false);
conn.setRequestProperty("Pragma", "no-cache");
conn.setRequestProperty("Expires", "0");
conn.setRequestProperty("Cookie", ".ROBLOSECURITY=" + ROBLOSECURITY);
conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "en-US,en;q=0.8");
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36");
conn.setDoInput(true);
conn.setRequestMethod("GET");
conn.connect();
Scanner data = new Scanner(conn.getInputStream());
data.useDelimiter("\\A");
String result = data.next();
data.close();
conn.disconnect();
Si può o non può essere importante notare che restituisce un risultato unico ogni volta che ricomincio il programma ma non durante il runtime del programma.
Aggiornamento:
analisi Wireshark (ho ottimizzato il mio codice un po 'dall'ultima volta):
GET /my/money.aspx HTTP/1.1
Pragma: no-cache
Expires: 0
Cookie: .ROBLOSECURITY=_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this-will-allow-someone-to-log-in-as-you-and-to-steal-your-ROBUX-and-items.|*sensitive*
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Cache-Control: no-cache
Host: www.roblox.com
Connection: keep-alive
HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: text/html; charset=utf-8
Set-Cookie: rbx-ip=; domain=roblox.com; path=/; HttpOnly
Set-Cookie: RBXSource=rbx_acquisition_time=1/4/2016 12:45:21 AM&rbx_acquisition_referrer=&rbx_medium=Direct&rbx_source=&rbx_campaign=&rbx_adgroup=&rbx_keyword=&rbx_matchtype=&rbx_send_info=0; domain=roblox.com; expires=Wed, 03-Feb-2016 06:45:21 GMT; path=/
Access-Control-Allow-Credentials: true
Set-Cookie: rbx-ip=; domain=roblox.com; path=/; HttpOnly
Set-Cookie: RBXSource=rbx_acquisition_time=1/4/2016 12:45:21 AM&rbx_acquisition_referrer=&rbx_medium=Direct&rbx_source=&rbx_campaign=&rbx_adgroup=&rbx_keyword=&rbx_matchtype=&rbx_send_info=1; domain=roblox.com; expires=Wed, 03-Feb-2016 06:45:21 GMT; path=/
Set-Cookie: RBXEventTrackerV2=CreateDate=1/4/2016 12:45:21 AM&rbxid=59210735&browserid=3940274345; domain=roblox.com; expires=Fri, 22-May-2043 05:45:21 GMT; path=/
Set-Cookie: GuestData=UserID=-856460986; domain=.roblox.com; expires=Fri, 22-May-2043 05:45:21 GMT; path=/
P3P: CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
Date: Mon, 04 Jan 2016 06:45:20 GMT
Content-Length: 153751
C'è un proxy tra voi e la Internet? Ho avuto problemi a causa della cache del proxy prima. –
È possibile aggiungere un registro per whirehark con dati corretti e il secondo con errato per il confronto? –
Il dump di Wireshark di un ciclo di richiesta/risposta della comunicazione non è sufficiente. Abbiamo bisogno di almeno due di quelli. Inoltre, wireshark è in esecuzione sull'host del client? –