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

具有HttpUrlConnection的抢占式基本身份验证?

段干帅
2023-03-14
问题内容

使用HttpUrlConnection使用抢占式基本HTTP身份验证的最佳方法是什么。(假设现在我不能使用HttpClient)。

编辑以澄清问题:我使用Base64编码在请求标头中正确设置了un /
pw。是否需要设置任何其他标志或属性,或者我是否在为请求的基本身份验证头设置抢先式基本身份验证所需的全部信息?


问题答案:

如果您使用的是Java 8或更高版本,java.util.Base64则可以使用:

HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
String encoded = Base64.getEncoder().encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8));  //Java 8
connection.setRequestProperty("Authorization", "Basic "+encoded);

然后正常使用连接。

如果您使用的是Java 7或更低版​​本,则需要一种将String编码为Base64的方法,例如:

byte[] message = (username+":"+password).getBytes("UTF-8");
String encoded = javax.xml.bind.DatatypeConverter.printBase64Binary(message);

是的,这就是您使用基本身份验证所要做的全部。上面的用于设置Request属性的代码应在打开连接之后以及获取Input或Output流之前立即完成。



 类似资料:
  • 问题内容: 是否有比此处描述的更简单的方法来设置HTTP客户端以进行抢占式基本身份验证? 在以前的版本(3.x)中,它曾经是一个简单的方法调用(例如 我要避免的主要事情是将BasicHttpContext添加到我执行的每个方法中。 问题答案: 不每次都传递上下文很难做到这一点,但是你可以使用请求拦截器来做到这一点。这是我们使用的一些代码(从JIRA iirc中找到):

  • 我尝试使用https://subversion.jfrog.org/jfrog/build-info/trung/build-info-client/src/main/java/org/jfrog/build/client/preemptiveHttpClient.java和Solr类对一个受Auth保护的基本Solr进行抢先身份验证,但是这些方法被否决了,所以我不知道这是否是一个问题。情况是,在

  • 问题内容: 我必须 使用 HTTP Basic身份验证从http服务器下载和解析XML文件。现在,我这样做: 但是以这种方式,我无法从具有http身份验证的服务器获取xml(或者我只是根本不知道该文档)文档。 如果您能向我展示实现我的目标的最好,最简单的方法,我将不胜感激。 问题答案: 您可以使用。例如: 这将设置默认值,并将在 所有 请求中使用。显然,当您不需要所有请求的凭据或多个不同的凭据(可

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

  • 问题内容: 我们在Spring 3.0中将RestTemplate与xml配置一起使用,并且运行良好。 但是,当我们尝试迁移到Spring 3.1版本时,不建议使用CommonsClientHttpRequestFactory类,并且不再使用commons HttpClient。 我试图使用HttpComponentsClientHttpRequestFactory类和Apache HttpCli

  • 问题内容: Jsoup中是否可以通过基本访问身份验证从网站加载文档? 问题答案: 使用HTTP基本访问身份验证时,您需要发送标头以及一个值。 例如(在Apache Commons Codec Base64的 帮助下): (为了简便起见,省略了字符编码的明确说明,因为登录名和密码通常很简单;此外,Base64总是生成字节)