2011-01-29 9 views
7

La mia app accede a informazioni sul web, durante il mio sviluppo come faccio a simulare un sito in Java? Se l'URL mi ottiene la pagina che la mia app elabora, ma se un sito per qualche motivo è temporaneamente inattivo, o anche se il sito è attivo, ma l'url restituisce informazioni non valide o potrebbe essere la connessione Internet disabilitata, come può un L'app Java distingue queste situazioni? E essere in grado di dire quale si sta verificando?Come simulare un sito in Java?

Modifica: Sto provando a scrivere la mia app Java in modo che quando incontra diversi accessi url, sappia in quale caso si tratti e comunichi all'utente di conseguenza.

+0

Potrebbe chiarire la sua domanda, per favore? Stai provando a _test_ il comportamento della tua app quando tenta e non riesce a raggiungere un sito esterno? Stai cercando di scrivere codice che gestisca un tipo diverso di caso di errore? –

risposta

0

Se un sito non è attivo, verrà generato un codice 404 e verrà generato un valore java.net.UnknownHostException. Dovrai prenderlo o prendere come IOException. Per altri codici di stato puoi leggerli usando il seguente frammento di codice. Puoi vedere un elenco di HTTP status codes qui.

È possibile leggere il codice di risposta in questo modo.

URL url = new URL ("http://someurl.doesnotexist.com"); 
    URLConnection connection = url.openConnection(); 
    connection.connect(); 
    HttpURLConnection httpConnection = (HttpURLConnection) connection; 
    int code = httpConnection.getResponseCode(); 
    //do something with the code 
+4

Se il sito non è attivo, significa che il server Web è inattivo e non in esecuzione. Ovviamente non può rispondere con un codice 404 se non funziona affatto. – Progman

+0

Ovviamente. In tal caso otterrai un'eccezione. Il codice sopra riportato è solo un breve snippet ... dovranno essere circondati da try catch di IOException. Il 404 verrà catturato in quell'eccezione. Modificherò la mia risposta per chiarire quella parte. Si prega di rimuovere il downvote se pensate che la risposta sia all'altezza della vostra soddisfazione dopo l'upvote. – CoolBeans

+1

@Progman: Site down non significa server down. –

0

I codici di risposta HTTP sono la chiave. Errore interno del server (500) o Pagina non trovata (404) può essere usato per distinguere quelle situazioni (probabilmente in combinazione con codici di stato aggiuntivi).

Se si utilizza la molla, è possibile utilizzare uno Interceptor per generare risposte diverse in momenti diversi (in modo da poter simulare che il sito sia inattivo). Un buon esempio è fornito nella documentazione. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor

0

Se è necessario negare l'accesso a un indirizzo Internet specifico, è possibile utilizzare un'applicazione firewall. Oppure, ancora più semplice, se l'indirizzo IP del tuo server viene risolto da un nome di dominio, puoi indirizzare quel nome di dominio al tuo indirizzo di loopback (127.0.0.1) usando il file/etc/hosts (% SystemRoot% \ system32 \ drivers \ etc \ per Windows).

+0

Penso che sia quello che l'OP sta chiedendo qui. Se ho capito bene, sta cercando un modo per scoprire se un sito web è inattivo o ha restituito qualche forma di errore interno del server che impedisce la visualizzazione. – CoolBeans

+0

Sì, forse. Non ero sicuro di aver risposto alla domanda che ho ricevuto dal post. :) – aruseni

1

Ai fini del test o simulare diverse condizioni di errore, ecco alcuni ulteriori suggerimenti:

  • Assicurarsi che il dominio del URL non è raggiungibile (dominio risolve in un indirizzo IP, ma l'indirizzo IP non è raggiungibile). È possibile simulare ciò aggiungendo una voce nel file/etc/hosts (se unix)
  • Assicurarsi che il dominio dell'URL non sia risolvibile, ovvero un indirizzo di dominio falso che non esiste
  • Scollegare il cavo di rete del client/wireless: cosa succede?
  • Scollegare il cavo di rete del client durante il trasferimento: cosa succede?
  • Scollegare il cavo di rete del server di test nel mezzo di un trasferimento? Cosa vede il cliente?
  • uccidere il server Web del server di test mentre si trova nel mezzo di un trasferimento? Cosa succede alla connessione URL del cliente?
  • Arresta il server Web del server di test e cosa vede il client quando tenta di connettersi?

Mentre testate questi diversi scenari sarete sorpresi di scoprire cosa succede al vostro cliente. Se sei fortunato otterrai delle eccezioni. A volte il cliente potrebbe rimanere in eterno. Ma questo è il mondo reale. In bocca al lupo.

+0

Bello vedere questi dettagli! Grazie. – Frank