Come newbie relativa nel mondo Java, sto trovando molte cose frustranti che ottengono risultati relativamente insignificanti in molti altri framework. Un esempio primario è una soluzione semplice per le richieste HTTP asincrone. Visto che uno non sembra esistere già, qual è l'approccio migliore? Creare i miei thread usando un tipo di blocco lib come httpclient o il java http incorporato, o dovrei usare il più recente roba io java non bloccante - sembra particolarmente complesso per qualcosa che dovrebbe essere semplice.Client HTTP asincrono per Java
Quello che sto cercando è qualcosa di facile da usare dal punto di vista dello sviluppatore - qualcosa di simile a URLLoader in AS3 - dove si crea semplicemente un URLRequest - allega un gruppo di gestori di eventi per gestire il completamento, errori, progresso, ecc. e chiama un metodo per attivarlo.
Se non si ha familiarità con URLLoader in AS3, il suo modo super facile e simile a questa:
private void getURL(String url)
{
URLLoader loader = new URLLoader();
loader.addEventListener(Event.Complete, completeHandler);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
URLRequest request = new URLRequest(url);
// fire it off - this is asynchronous so we handle
// completion with event handlers
loader.load(request);
}
private void completeHandler(Event event)
{
URLLoader loader = (URLLoader)event.target;
Object results = loader.data;
// process results
}
private void httpStatusHandler(Event event)
{
// check status code
}
private void ioErrorHandler(Event event)
{
// handle errors
}
Capire completamente le diverse nicchie. Tuttavia, in questo caso, stiamo utilizzando Java come framework dell'interfaccia utente client e molti dei dati da presentare provengono da servizi Web esterni. – helifreak
In realtà ci sono più client http asincroni, elencati in altre risposte (il molo ne ha avuto uno per anni, jakarta hc un po 'di tempo fa, il client http async di ning è il più recente e attivamente sviluppato). Non hanno ottenuto abbastanza attenzione che meritano. – StaxMan