我有一个带有 WSSE 身份验证的 Web 服务。Web 服务是用 Symfony2 编写的,我可以通过 PHP 客户端以及称为 REST Console 的 chrome 插件访问它,因此它可以工作。为了手动生成标题,我使用了这个 wsse 生成器。
为了制作我遵循本教程的 Android 客户端,它可以工作,但只有在它不生成时间戳时才有效。
生成时间戳的代码是:
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
...
private String generateTimestamp() {
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
return sdf.format(new Date());
}
它返回的字符串是正确的,格式和一切看起来都很完美,但它告诉“未授权”,但是当我像这样直接编写时间戳时它可以工作:
private String generateTimestamp() {
return "2014-03-25T09:00:26Z";
}
我检查了编码,尝试像 UTF-8 和 Cp-1252 (文件编码)一样对其进行编码:
private String generateTimestamp() {
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String hora = sdf.format(new Date());
String correctString = "fail";
try {
correctString = new String(hora.getBytes(), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
correctString.hashCode();
//String buena = "2014-03-25T08:10:59Z";
return correctString ;
}
我使用 Calendar.YEAR + Calendar.MONTH.... 生成了时间戳,但仍然无法正常工作。
目前我正在尝试在真实手机中对其进行测试,但我认为这不是模拟器问题。
你有什么建议吗?非常感谢您!