Closed giubri91 closed 4 years ago
Ciao, assicurati di abilitare la gestione dei cookie, le richieste devono condividerli proprio come un browser. Altrimenti se la seconda richiesta non invia i cookie sessione della prima sicuramente non funzionerà
Grazie mille per il suggerimento dei cookie, ho risolto il problema. Per chi ne avesse bisogno, ecco la soluzione che ho trovato, scritta in C#:
prima richiesta, lista soluziooni: qui imposto anche i cookie
Uri site = new Uri(url); //url di ricerca
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(site);
request.CookieContainer = cookieContainer;//imposto i cookie
request.AutomaticDecompression = DecompressionMethods.GZip;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
json = reader.ReadToEnd();
}
}
var result = JsonConvert.DeserializeObject<List<soluzioniPercorsoDeserialize>>(json);
seconda richiesta di dettagli di una determinata soluzione: dove utilizzo i cookie della prima chiamata
Uri site2= new Uri(solutionCurrentUrl);//url contentente l'id soluzione di cui vogliamo avere i dettagli
HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(site2);
request2.CookieContainer = cookieContainer; //imposto i cookie uguali a quelli della prima chiamata
request2.AutomaticDecompression = DecompressionMethods.GZip;
using (HttpWebResponse response = (HttpWebResponse)request2.GetResponse())
{
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
jsonSolution = reader.ReadToEnd();
}
}
var dettagliSol = JsonConvert.DeserializeObject<List<dettagliSoluzioneDeserialize>>(jsonSolution);
Ottimo, io esplicito meglio sulla wiki la questione sessione e cookie
Gentile SimoDax, grazie per aver creato questa guida sulle API di Trenitalia. Sto scrivendo un software in C# che aiuterà i non vedenti ed ipovedenti a navigare le soluzioni per delle tratte di viaggio in treno. Ti volevo chiedere aiuto circa l'ottenimento dei dettagli per una soluzione. Ho visto nella guida che specifichi:
quindi ho provato a fare la richiesta subito dopo aver fatto la ricerca delle soluzioni.
Ho scritto questo codice per ottenere la lista delle soluzioni :
ed ottengo le informazioni, adesso estraggo per ogni soluzione l'id ed eseguo la query da te segnalata nella guida.