java – 具有基本身份验证的HTTP请求

我必须使用HTTP Basic身份验证从http服务器下载并解析XML文件。现在我这样做:

URL url = new URL("http://SERVER.WITHOUT.AUTHENTICATION/some.xml");
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     DocumentBuilder db = dbf.newDocumentBuilder();
     Document doc = db.parse(new InputSource(url.openStream()));
     doc.getDocumentElement().normalize();

但是以这种方式,我无法从具有http身份验证的服务器获取xml(或者我根本不知道的)文档。

如果能让我看到达到我目标的最好和最简单的方法,我将非常感激。

最佳答案
您可以使用Authenticator.例如:

Authenticator.setDefault(new Authenticator() {
 @Override
        protected PasswordAuthentication getPasswordAuthentication() {
         return new PasswordAuthentication(
   "user", "password".toCharArray());
        }
});

这将设置默认的Authenticator,并将在所有请求中使用。显然,当您不需要所有请求的凭据或许多不同的凭据,也许在不同的线程上时,更多的参与。

或者,您可以使用DefaultHttpClient,其中具有基本HTTP身份验证的GET请求将类似于:

HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://foo.com/bar");
httpGet.addHeader(BasicScheme.authenticate(
 new UsernamePasswordCredentials("user", "password"),
 "UTF-8", false));

HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity responseEntity = httpResponse.getEntity();

// read the stream returned by responseEntity.getContent()

我建议使用后者,因为它可以为您提供更多的控制(例如方法,标题,超时等)。

转载注明原文:java – 具有基本身份验证的HTTP请求 - 代码日志