Come inviare asincrona HTTP GET/POST richiesta in java senza attendere/lettura di risposta? Non voglio di utilizzare tutte le librerie di terze parti ..asincrono richiesta HTTP in java
risposta
Se non siete interessati a leggere la risposta affatto si può semplicemente utilizzare URL.openStream() per creare una connessione e quindi chiudere immediatamente il socket (o ignorarlo e lasciarlo scadere, se vuoi essere cattivo con il server). Questo non è strettamente asincrono, ma sarà un po 'più veloce di qualsiasi approccio che si basa sul recupero e l'analisi della risposta del server.
Questo può naturalmente essere effettuato asincrona scarico dei openStream()
chiamate a un altro filo, manualmente o in base alle utilità disponibili in java.util.concurrent
.
java.util.concurrent può essere utilizzato.
Se interessati sta utilizzando librerie di terze parti, allora si potrebbe desiderare di dare un'occhiata a
davvero ...! Grazie a @Sandeep Pathak! : D – gumuruh
Suggerirei di utilizzare qualcosa come Jetty HttpClient se non vi dispiace aggiungere le librerie Jetty alla vostra app. Ecco un buon esempio dalla pagina wiki di Jetty http://wiki.eclipse.org/Jetty/Tutorial/HttpClient.
dalla documentazione al link sopra: "il metodo send() ritorna immediatamente dopo aver inviato lo scambio a un pool di thread per l'esecuzione" - quindi, non proprio asincrono. – kellogs
URL.openConnection() non invia la richiesta HTTP al server.questo è il codice ** URL url = new URL ("http: // localhost /"); URLConnection myURLConnection = url.openConnection(); myURLConnection.connect(); ** e ho visto i log di accesso di Apache e non sta ottenendo la richiesta. – pavan
@pavan - Ah, il mio errore, l'API da usare è in realtà 'openStream()', non 'openConnection()'. 'openConnection()' prepara un oggetto di connessione, ma in realtà non stabilisce una connessione al server. 'openStream()' stabilisce la connessione e restituisce 'InputStream' associato ad esso, che quindi sei libero di leggere, chiudere o ignorare. Modificherò la mia risposta di conseguenza. – aroth