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

pri*_*vex 14 java base64 android retrofit okhttp

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

Unexpected char 0x0a at 28 in header value: I99Uy+HjG5PpEhmi8vZgm0W7KDQ=

用法:

String encodedHeader = Base64.encodeToString(value.getBytes(), Base64.DEFAULT); header.put("auth", encodedHeader);

pri*_*vex 34

0x0a是一个在标题中被禁止的换行符.解决方案是确保在将编码值作为标头发送之前剥离这些字符.

Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); 这避免了使用特定于平台的换行符进行换行.

  • 如果使用Okio的ByteString,则base64更容易:`encodedHeader = ByteString.encodeUtf8(value).base64();` (4认同)