java - Base 64 编码包含电子邮件地址的用户名-- java

标签 java http encoding base64

我一直在使用 httpClient 尝试将连接字符串写入基于 https 的 API,而用户名/密码 auth 有点棘手。

使用 Appache commons base64 编码器我被迫将字节数组传递给构造函数,我的身份验证应该是 email@companyName:password 但是 base 64 转换器不支持 @ 符号(因为它不是 0-9 a-z 或 a-z 或/+),但是这显然需要在我可以授权之前解决....帮助?

代码(在请求之前):

import org.apache.commons.codec.binary.Base64;
....
        String encoding = Base64.encodeBase64String("username@company.com:password");
        HttpPost httppost = new HttpPost("https://webapi.com/api/protectedarea");
        httppost.setHeader("Authorization", "Basic " + encoding);

完整错误代码:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:150)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:575)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)

最佳答案

问题是您对字符串进行了双重编码。首先在第一行,然后在第三行。

除非你在另一端进行双重解码,否则你会遇到问题(你为什么要那样做?)。

关于java - Base 64 编码包含电子邮件地址的用户名-- java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586339/

相关文章:

java - 如何将小数组复制到大数组?

.net - 异步使用的 HttpListener 同步运行

python-3.x - 这两种在 Python 中建立网络连接的方式之间的实际区别是什么?

javascript - 在 node.js 中使用 pdfkit 以任何语言呈现文本

java - JButton 中不显示图标

java - 在 Swing 中更改 JScrollPane 高度

java - 在 JAX-WS 中引发自定义异常

asp.net - 如何处理 ASP.NET 站点中的 ASP 请求?

java - GWT RPC 如何在其有效负载中编码 java.lang.Long 值?

multithreading - 在 SLURM 环境中运行 FFMPEG 多线程