我在使用服务之前使用休息服务来发送邮件我已经创建了一个json并加密了它。因此,当我从主类启动我的休息客户端时,主题中的'ñ'字符显示正常,但如果我从struts操作启动相同的代码,我会得到一个奇怪的字符,我比较两种情况下的加密字符串和两种情况加密的字符串是不同的。 这是我的代码,我收到信息放在json中加密它:
public boolean enviarCorreo(String to, String body, subject) throws InvalidKeyException,
IllegalBlockSizeException, BadPaddingException,
NoSuchAlgorithmException, NoSuchPaddingException,
InvalidAlgorithmParameterException, IOException {
Gson gson = new Gson();
Correo correoDTO = new Correo();
correoDTO.setTo(to);
correoDTO.setBodyHtml(body);
String szUT8 = "";
try {
byte[] b1;
b1 = subject.getBytes("UTF-8");
System.out.println(b1.toString());
szUT8 = new String(b1, "UTF-8");
System.out.println(szUT8);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
correoDTO.setSubject(szUT8);
String correoNoEncriptado = gson.toJson(correoDTO, Correo.class);
String encryptedString = SymmetricEncryptionUtility
.encrypt(correoNoEncriptado);
String urlStr = "http://localhost:8080/correos/restFull/v1.0/generico/genera";
String[] paramName = new String[1];
paramName[0] = "jsonParams";
String[] paramVal = new String[1];
paramVal[0] = encryptedString;
String salida = "";
try {
salida = httpPost(urlStr, paramName, paramVal);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
RespuestaCorreo r = gson.fromJson(salida, RespuestaCorreo.class);
return r.isSuccess();
}
马克所说的诀窍。在我的加密方法中,我改变了
byte[] stringBytes = message.getBytes();
到
byte[] stringBytes = message.getBytes("UTF-8");