我有一个带有WSSE身份验证的Web服务。 Web服务是用Symfony2编写的,我可以通过PHP客户端访问它,也可以通过名为REST Console的chrome插件访问它,因此它可以工作。为了手动生成头文件,我使用了this wsse generator。Android中的WSSE时间戳生成
为了使Android客户端,我遵循此tutorial,它的工作原理,但只有当它不生成时间戳。
其产生的时间戳的代码是:
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 ....生成了时间戳,但仍然无效。
目前我正试图在真实手机上测试它,但我不认为这是一个模拟器问题。
你有什么建议吗?非常感谢您提前!