2009-08-24 47 views

Respuesta

9

Uso java.net.URL para conseguir un InputStream: manejo

final URL url = new URL("http://www.abc.com/file.xml"); 
final InputStream in = new BufferedInputStream(url.openStream()); 
// Read the input stream as usual 

Excepción y esas cosas omitido por brevedad.

+0

Gracias para la solución dave, trabajó un regalo – Damien

3

La respuesta de Dave Ray es rápida y fácil, pero no funcionará bien con los redireccionamientos HTTP o si, por ejemplo, tiene que pasar por un servidor proxy que requiere autenticación. Desafortunadamente, las clases estándar de API de Java (en java.net) carecen de alguna funcionalidad o son difíciles de usar en tales circunstancias.

La biblioteca de código abierto Apache HttpClient puede manejar los redireccionamientos automáticamente y facilita el trabajo con servidores proxy que requieren autenticación.

Aquí hay un ejemplo básico:

HttpClient client = new HttpClient(); 
GetMethod method = new GetMethod("http://www.abc.com/file.xml"); 

int statusCode = client.executeMethod(method); 
if (statusCode != HttpStatus.SC_OK) { 
    System.err.println("Method failed: " + method.getStatusLine()); 
} 

byte[] responseBody = method.getResponseBody(); 
+0

Gracias Jesper. El servidor que aloja el xml está bajo mi control, así que no tengo que preocuparme por las redirecciones. Gracias por su entrada válida, es muy apreciada – Damien

0

Si se desea usar el DOM W3C y no está interesado en cualquiera de los IO o HTTP detalles se puede hacer lo siguiente:

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import org.w3c.dom.Document; 

... 

final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
final DocumentBuilder builder = factory.newDocumentBuilder(); 
final Document document = builder.parse("http://www.abc.com/file.xml"); 
Cuestiones relacionadas