2014-03-25 2 views
1

У меня есть веб-сервис с аутентификацией WSSE. Веб-сервис написан на Symfony2, и я могу получить к нему доступ через PHP-клиент, а также с плагином для chrome, называемым REST Console, поэтому он работает. Для генерации заголовков вручную я использовал this wsse generator.Генерация временной метки WSSE в Android

Чтобы сделать клиент 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 и СР-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 .... но все равно не работает.

На данный момент я пытаюсь протестировать его в реальном телефоне, но я не думаю, что это проблема эмулятора.

Есть ли у вас какие-либо предложения? Заранее большое спасибо!

ответ

0

Решение, которое работает так:

private String generateTimestamp() { 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    String hora = sdf.format(new Date()); 

    return "\""+hora+"\""; 
} 

Проблема заключается в том, что конечная строка, что Android посылает на веб-сервиса имеет две двойные кавычки, как это:

X-WSSE: UsernameToken Username="esther", PasswordDigest="FgWu9GAKkbmsc52fZHu3VINHlKw=", Nonce="OWVkNDMxMWY2OGE4MTZjOQ==", Created=""2014-03-25T09:00:26Z"" 

Но это работает, даже если это не лучшее решение.

Я думаю, что это отличается между тем, как Java/Android/SimpleDateFormat генерировать строку, но ...

я испытал, пытаясь сцепить пустую строку, но она по-прежнему не работает.

 Смежные вопросы

  • Нет связанных вопросов^_^