Dav*_*ims 38 java authentication android http basic-authentication
使用HttpUrlConnection使用抢占式基本http身份验证的最佳方法是什么.(现在假设我不能使用HttpClient).
编辑澄清:我正在使用Base64编码在请求标头中正确设置un/pw.是否需要设置任何其他标志或属性,或者我是否为抢先式基本身份验证所需的所有请求设置基本身份验证头?
don*_*ata 101
如果您使用的是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);
Run Code Online (Sandbox Code Playgroud)
然后正常使用连接.
如果您使用的是Java 7或更低版本,则需要一种方法将String编码为Base64,例如:
byte[] message = (username+":"+password).getBytes("UTF-8");
String encoded = javax.xml.bind.DatatypeConverter.printBase64Binary(message);
Run Code Online (Sandbox Code Playgroud)
是的,这就是使用Basic Auth所需要做的一切.设置请求属性的上述代码应在打开连接后和获取输入或输出流之前立即完成.
| 归档时间: |
|
| 查看次数: |
63603 次 |
| 最近记录: |