Java 在Android中使用OkHttp客户端时,标头值中出现意外字符0x0a

Java 在Android中使用OkHttp客户端时,标头值中出现意外字符0x0a,java,android,base64,retrofit,okhttp,Java,Android,Base64,Retrofit,Okhttp,当使用Http发送Base64编码的字符串作为头时,我得到的错误响应为 标题值中28处的意外字符0x0a:I99Uy+HjG5PpEhmi8vZgm0W7KDQ= 用法: String encodedHeader=Base64.encodeToString(value.getBytes(),Base64.DEFAULT); header.put(“auth”,encodedHeader)0x0a是头中禁止使用的换行符。 解决方案是确保在将编码值作为头发送之前去掉这些字符 Base64.encod

当使用Http发送Base64编码的字符串作为头时,我得到的错误响应为

标题值中28处的意外字符0x0a:I99Uy+HjG5PpEhmi8vZgm0W7KDQ=

用法:

String encodedHeader=Base64.encodeToString(value.getBytes(),Base64.DEFAULT);

header.put(“auth”,encodedHeader)

0x0a
是头中禁止使用的换行符。 解决方案是确保在将编码值作为头发送之前去掉这些字符

Base64.encodeToString(credentials.getBytes(),Base64.NO_WRAP)

这避免了使用平台特定的换行符进行换行。

如果使用Okio的ByteString,base64更容易:
encodedHeader=ByteString.encodeUtf8(value).base64()
@priyankvex感谢您的解决方案。它很有魅力。但我不明白“这避免了使用特定于平台的换行符包装”。你能让我明白这一点吗。谢谢:)