Salve a tutti,
sto sviluppando un app per android e devo utilizzare le API messe a disposizione da "haveibeenpawned".
Ora le vie sono due: 1-Mi connetto e reperisco le informazioni via URL (cosa non dificile e con meno opzioni (https://haveibeenpwned.com/api/v2/breachedaccount/{account})) 2- Attraverso una richiesta HTTP (un pò più complesso ma ricevo più informazioni). Riguardo la prima via ho dei problemi in quanto non riesco a 'parsare' il testo che ricevo...cioè non so come è indentato e quindi non so come leggerlo invece utilizzando una richiesta http posso impostare delle proprietà nell'header ->
Posso settando le giuste proprietà (Accept: application/vnd.haveibeenpwned.v2+json) ricevere un testo JSON che posso facilmente leggere da codice. Ora prima di andare a scrivere il codice volevo provare via URL se davvero restituiva del testo indentato in JSON poichè sapevo che aggiungendo le proprietà dell'header di una richiesta HTTP dopo un URL e un '?' il risultato era lo stesso. (se mi sbaglio ditemelo!!)
Così ho provato con questa richiesta (https://haveibeenpwned.com/api/breachedaccount/prova?accept: application/vnd.haveibeenpwned.v2+json) che funziona, però provando con altre opzioni non va (ad es. https://haveibeenpwned.com/api/breaches/Adobe?accept: application/vnd.haveibeenpwned.v2+json)
Dove sbaglio?
PS è più efficiente la richiesta URL o è meglio sbatterci un pò ma usare una richiesta http? (vorrei usare la seconda visto che è più stimolante anche a scopo didattico)
sto sviluppando un app per android e devo utilizzare le API messe a disposizione da "haveibeenpawned".
Ora le vie sono due: 1-Mi connetto e reperisco le informazioni via URL (cosa non dificile e con meno opzioni (https://haveibeenpwned.com/api/v2/breachedaccount/{account})) 2- Attraverso una richiesta HTTP (un pò più complesso ma ricevo più informazioni). Riguardo la prima via ho dei problemi in quanto non riesco a 'parsare' il testo che ricevo...cioè non so come è indentato e quindi non so come leggerlo invece utilizzando una richiesta http posso impostare delle proprietà nell'header ->
Codice:
//Create connection
URL url =new URL(targetURL);
connection =(HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length",
Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language","en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
Così ho provato con questa richiesta (https://haveibeenpwned.com/api/breachedaccount/prova?accept: application/vnd.haveibeenpwned.v2+json) che funziona, però provando con altre opzioni non va (ad es. https://haveibeenpwned.com/api/breaches/Adobe?accept: application/vnd.haveibeenpwned.v2+json)
Dove sbaglio?
PS è più efficiente la richiesta URL o è meglio sbatterci un pò ma usare una richiesta http? (vorrei usare la seconda visto che è più stimolante anche a scopo didattico)