Recently was trying to consume a Rest Web Service by passing AES256 encrypted values in header Params and hit the above exception.
java.lang.IllegalArgumentException: Illegal character(s) in message header value:
After a little bit of resaerch i found that it is a bug with java while using BASE64 Encoded String.If the string length exceeds 76 characters, the Base64Encoder adds a "\n" character. While trying to sent it in header it fails complaining about the "\n" in the Base64 encoded string.
This is actually a bug with JAVA
The fix is
String encodeMe = m_username + ":" + m_sToken; BASE64Encoder encoder = new BASE64Encoder(); String base64Encoded = encoder.encode(encodeMe.getBytes()); //!Important! - Get rid of any newline characters erroneously // added by the Base64Encoder base64Encoded = base64Encoded.replaceAll("\n", ""); basicAuthCredentialsBase64 = base64Encoded;
The line highlighted in red will do the trick. Simply replace all \n with space and issue resolved.
This Stack Overflow post also speaks on same
Happy Coding :)