当前位置: 首页 > 面试题库 >

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

宦子琪
2023-03-14
问题内容

我必须 使用 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()

我建议使用后者,因为它可以让您对请求进行更多控制(例如,方法,标头,超时等)。



 类似资料:
  • 我尝试了angular.js,并从一个restful api的web-ui开始(使用超文本传输协议基本授权)。这真的很好,除了授权工作。 到目前为止,我使用的是设置密码,但大多数情况下浏览器会打开http basic auth的默认登录表单。另一个奇怪的行为是angular请求不包含授权头(选项和GET请求都不包含)。我还尝试使用header配置在每个请求上设置此header,但这也不起作用。 有

  • 问题内容: 我想写书,所使用的一个一个的NodeJS REST的API服务器Joyent的,并且一切正常,除了我无法验证普通用户的身份验证。如果我跳到终端并执行,则无法在NodeJS http服务器上获取值username:password。如果我的NodeJS http服务器类似于 ,是否应该在来自回调的 req 对象中某处获取值username:password ?如何获得这些值而不必使用Co

  • 问题内容: 我正在尝试使用 基本身份验证 访问URL 。 URL返回JSON数据。 如何在下面的http请求中添加用户名和密码? 问题答案: 请参阅https://angular.io/guide/http或https://v6.angular.io/guide/http#adding- headers 然后使用标题:

  • 问题内容: 如何在Golang网站上实施基本身份验证?这样,当有人访问某个页面时,他们的 浏览器 会提示他们登录。 问题答案: 为了强制用户进行身份验证/在用户浏览器中显示基本身份验证提示,请发送标头 因此,如果您有通话,您可以 这将导致浏览器打开您所指的提示。

  • 问题内容: 使用HttpUrlConnection使用抢占式基本HTTP身份验证的最佳方法是什么。(假设现在我不能使用HttpClient)。 编辑以澄清问题:我使用Base64编码在请求标头中正确设置了un / pw。是否需要设置任何其他标志或属性,或者我是否在为请求的基本身份验证头设置抢先式基本身份验证所需的全部信息? 问题答案: 如果您使用的是Java 8或更高版本,则可以使用: 然后正常使

  • 我正在尝试实现一个简单的发布到URL,该URL在上接受正文中的基本身份验证。 我尝试过但我被,我的数据被发送到服务器。 我尝试的另一种方法是使用,但现在我遇到了一个不同的问题。身份验证工作完美,但数据没有发送到服务器... 为了确保,我在一个简单的Java项目(不是Android环境)中设置了一个小测试。 这是我用来到服务器的代码: Java项目中的代码运行良好。 当我在Android中尝试完全相