Я пытаюсь связаться с веб-сервисом Java через приложение .NET, используя ссылку на сервис Visual Studio (классы пространства имен System.ServiceModel). Я обнаружил, что всякий раз, когда он сериализует значение DateTime, он не определяет смещение. Проблема в два раза:
- Я не могу понять, как создать объект DateTime с определенным часовым поясом. Я могу создать DateTimeOffset, который выполнит это, но клиент службы ожидает объект DateTime.
- Когда объект DateTime сериализуется, он не включает смещение часового пояса.
Чтобы уточнить вопрос №2, XML, который служба ожидает для объекта отметки времени, выглядит следующим образом:
<startDate>2011-03-18T00:00:00-07:00</startDate>
<endDate>2011-03-19T00:00:00-07:00</endDate>
Однако XML-код, который я вижу при отслеживании приложения .NET, выглядит следующим образом:
<startDate>2011-03-18T00:00:00</startDate>
<endDate>2011-03-19T00:00:00</endDate>
Для веб-службы требуется часовой пояс, поскольку базовые данные отслеживаются в GMT-0. Возвращаемые данные поступают ежедневно, поэтому, если я не укажу часовой пояс, я получу данные для GMT-0. Только когда я предоставляю смещение в запросе, я получаю в правильном часовом поясе данные.