Attributes | Values |
---|
has container
| |
Date Created
| - Tue, 20 Nov 2012 21:00:55 GMT
- Fri, 18 Jan 2013 15:31:20 GMT
- Fri, 26 Apr 2013 18:19:35 GMT
- Thu, 11 Jul 2013 21:22:54 GMT
- Tue, 18 Mar 2014 15:54:37 GMT
- Thu, 05 Feb 2015 21:17:51 GMT
|
described by
| |
seeAlso
| |
content
| - SyncMLSyncML is a protocol for synchronization of data collections
between two devices - a SyncML Client and SyncML Server using an
XML data representation. The client is typically some mobile device or
mobile PC. The Virtuoso server implements the SyncML server protocol over
HTTP.The SyncML server maintains the data collections within the WebDAV
repository. The items (resources) in the collections (folders) represents
items found on the client, e.g. VCARD, vcalendar records. As the WebDAV
repository does not restrict the type of data that can be stored, likewise
there are no restrictions on the type of data that can be synchronized.
Also every WebDAV virtual directory can act as a SyncML server endpoint, the
SyncML processing is triggered via the Content-Type,
detected on the POST request (see below).See Also:
SyncML Schema TablesThe SyncML server detects the following formats from the
Content-Type header string:
application/vnd.syncml+wbxml - WBXML coded XML documents
application/vnd.syncml+xml - plain text XML document
These are detected during the POST request to a WebDAV virtual directory
thus triggering SyncML processing. When a device makes creates
'application/vnd.syncml+wbxml' session,
the SyncML server will respond with the WBXML format. Otherwise
plain XML will be used to encode SyncML messages.Basic and MD5 digest SyncML authorization schemes are supported.
The WebDAV enabled user accounts are used to perform authentication.It is possible to query the HTTP authentication type supported by the
target device by assigning an authentication hook to a given virtual directory.
By default SyncML authentication is digest-md5, so HTTP authentication is
off (note that HTTP authentication is different from SyncML authentication).The following synchronization methods are supported:
Two-way sync
Slow two-way sync
Every item sent from the client device is mapped to a WebDAV resource
under a given WebDAV collection. Every device database, such as contacts, calendar,
usually requires that a different WebDAV collection be specified because the devices
usually can not maintain items of different kinds with a single database. For
example, when synchronising the Contacts of a Nokia 9210 with the server,
we can specify ./contacts/, and likewise
for the Calendar database, ./calendar/.
This keeps VCARDS (contacts) and vCalendars in separate collections (folders) on
a given virtual directory. It is not possible to keep calendar and contacts
(for example) in the same WebDAV collection, unless the device supports such
items in a single database.Important Note:
The target folders (Virtuoso server-side collections) must exists and
must be accessible by the WebDAV account used to authenticate against the
SyncML server. If credentials or permissions are insufficient then an
Error 403 (Forbidden) will be returned to the client.Example of a SyncML session
The client begins initial request
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
</Source>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Alert>
<CmdID>1</CmdID>
<Data>201</Data>
<Item>
<Target>
<LocURI>./calendar</LocURI>
</Target>
<Source>
<LocURI>./C\System\Data\Calendar</LocURI>
</Source>
<Meta>
<Anchor>
<Next>20031202T165103Z</Next>
</Anchor>
</Meta>
</Item>
</Alert>
<Put>
<CmdID>2</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Source>
<LocURI>./devinf10</LocURI>
</Source>
<Data>
<DevInf>
<VerDTD>1.0</VerDTD>
<Man>NOKIA</Man>
<Mod>9210</Mod>
<SwV>256</SwV>
<HwV>1.0</HwV>
<DevID>IMEI:57471724140229</DevID>
<DevTyp>phone</DevTyp>
....
</DevInf>
</Data>
</Item>
</Put>
<Get>
<CmdID>3</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Target>
<LocURI>./devinf10</LocURI>
</Target>
</Item>
</Get>
<Final/>
</SyncBody>
</SyncML>
Server rejects credential, because no credentials.
<SyncML xmlns:n0="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Chal>
<Meta>
<Type xmlns:n2="syncml:metinf">syncml:auth-md5</Type>
<Format xmlns:n2="syncml:metinf">b64</Format>
<NextNonce xmlns:n2="syncml:metinf">NzcyYTgyMDRjMGM2NzRlYTZjYWVmNGY4ZjNjMGYzMDk=</NextNonce>
</Meta>
</Chal>
<Data>401</Data>
</Status>
....
<Final/>
</SyncBody>
</SyncML>
Client sends back credentials.
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>2</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
<LocName>imitko</LocName>
</Source>
<Cred>
<Meta>
<Format>b64</Format>
<Type>syncml:auth-md5</Type>
</Meta>
<Data>X8uGR8CX4ogw8Ux+ZWIzkg==</Data>
</Cred>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:57471724140229</TargetRef>
<SourceRef>http://192.168.1.1:6666/</SourceRef>
<Data>200</Data>
</Status>
<Alert>
<CmdID>2</CmdID>
<Data>201</Data>
<Item>
<Target>
<LocURI>./calendar</LocURI>
</Target>
<Source>
<LocURI>./C\System\Data\Calendar</LocURI>
</Source>
<Meta>
<Anchor>
<Next>20031202T165103Z</Next>
</Anchor>
</Meta>
</Item>
</Alert>
<Put>
<CmdID>3</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Source>
<LocURI>./devinf10</LocURI>
</Source>
<Data>
<DevInf>
<VerDTD>1.0</VerDTD>
<Man>NOKIA</Man>
<Mod>9210</Mod>
<SwV>256</SwV>
<HwV>1.0</HwV>
<DevID>IMEI:57471724140229</DevID>
<DevTyp>phone</DevTyp>
...
</DevInf>
</Data>
</Item>
</Put>
<Get>
<CmdID>4</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Target>
<LocURI>./devinf10</LocURI>
</Target>
</Item>
</Get>
<Final/>
</SyncBody>
</SyncML>
Server accepts the request.
<SyncML xmlns="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>2</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>5</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Data>212</Data> <!-- Authenticated for session -->
</Status>
<Status>
<CmdID>7</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>2</CmdRef>
<Cmd>Alert</Cmd>
<Data>200</Data> <!- two-way alert accepted, 'next' anchor echoed -->
<Item>
<Data>
<Anchor xmlns:n2="syncml:metinf">
<Next>20031202T165103Z</Next>
</Anchor>
</Data>
</Item>
</Status>
<Status>
<CmdID>8</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>3</CmdRef>
<Cmd>Put</Cmd>
<Data>200</Data> <!-- the 'put' command succeeded;
device info is written ->
</Status>
<Results> <!-- the following are server's device info -->
<CmdID>9</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>4</CmdRef>
<Meta>
<Type xmlns:n2="syncml:metinf">application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Source>
<LocURI>./devinf10</LocURI>
</Source>
<Data>
<DevInf xmlns:n2="syncml:devinf">
<VerDTD>1.0</VerDTD>
<Man>OpenLink Software Ltd</Man>
<Mod>Virtuoso</Mod>
<OEM>OpenLink</OEM>
<FwV>3.5</FwV>
<SwV>2602</SwV>
<HwV>0</HwV>
<DevID>http://localhost/</DevID>
<DevTyp>server</DevTyp>
<SyncCap>
<SyncType>1</SyncType>
<SyncType>2</SyncType>
</SyncCap>
...
<UTC/>
<SupportLargeObjs/>
<SupportNumberOfChanges/>
</DevInf>
</Data>
</Item>
</Results>
<Alert>
<CmdID>6</CmdID>
<Data>201</Data> <!-- the ./calendar/ is new empty collection;
server asks client for slow two-way sync. -->
<Item>
<Target>
<LocURI>./C\System\Data\Calendar</LocURI>
</Target>
<Source>
<LocURI>./calendar/</LocURI>
</Source>
<Meta>
<Anchor xmlns:n2="syncml:metinf">
<Last>1970-01-01T00:00:00.000+02:00</Last>
<Next>2003-12-02T18:51:05.000+02:00</Next>
</Anchor>
</Meta>
</Item>
</Alert>
<Final/>
</SyncBody>
</SyncML>
Client sends to server all calendar items. See 'Sync' element below.
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>3</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
</Source>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:57471724140229</TargetRef>
<SourceRef>http://192.168.1.1:6666/</SourceRef>
<Data>200</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>9</CmdRef>
<Cmd>Results</Cmd>
<Data>200</Data>
</Status>
<Status>
<CmdID>3</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>6</CmdRef>
<Cmd>Alert</Cmd>
<TargetRef>./C\System\Data\Calendar</TargetRef>
<SourceRef>./calendar/</SourceRef>
<Data>200</Data>
<Item>
<Data>
<Anchor>
<Next>2003-12-02T18:51:05.000+02:00</Next>
</Anchor>
</Data>
</Item>
</Status>
<Sync>
<CmdID>4</CmdID>
<Target>
<LocURI>./calendar</LocURI>
</Target>
<Source>
<LocURI>./C\System\Data\Calendar</LocURI>
</Source>
<Meta>
<Mem>
<FreeMem>7627614408</FreeMem>
<FreeID>59590737</FreeID>
</Mem>
</Meta>
<Replace> <!-- the client uses 'Replace' command -->
<CmdID>5</CmdID>
<Meta>
<Type>text/x-vcalendar</Type>
</Meta>
<Item>
<Source>
<LocURI>2</LocURI>
</Source>
<Data>
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
UID:2
DESCRIPTION:tests
DTSTART:20031127T090000
DTEND:20031127T090000
X-EPOCAGENDAENTRYTYPE:APPOINTMENT
CLASS:PUBLIC
DCREATED:20031128T000000
LAST-MODIFIED:20031201T123500
END:VEVENT
END:VCALENDAR
</Data>
</Item>
</Replace>
<Replace>
<CmdID>6</CmdID>
<Meta>
<Type>text/x-vcalendar</Type>
</Meta>
<Item>
<Source>
<LocURI>3</LocURI>
</Source>
<Data>
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
UID:3
DESCRIPTION:tests more
DTSTART:20031128T090000
DTEND:20031128T190000
X-EPOCAGENDAENTRYTYPE:APPOINTMENT
CLASS:PUBLIC
DCREATED:20031128T000000
LAST-MODIFIED:20031201T123500
END:VEVENT
END:VCALENDAR
</Data>
</Item>
</Replace>
<Replace>
<CmdID>7</CmdID>
<Meta>
<Type>text/x-vcalendar</Type>
</Meta>
<Item>
<Source>
<LocURI>5</LocURI>
</Source>
<Data>
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
UID:5
DESCRIPTION:today integration
DTSTART:20031201T090000
DTEND:20031201T090000
X-EPOCAGENDAENTRYTYPE:APPOINTMENT
CLASS:PUBLIC
DCREATED:20031201T000000
LAST-MODIFIED:20031201T125400
END:VEVENT
END:VCALENDAR
</Data>
</Item>
</Replace>
</Sync>
<Final/>
</SyncBody>
</SyncML>
Server stores new items.
<SyncML xmlns:n0="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>3</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>10</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Data>212</Data>
</Status>
<Status>
<CmdID>11</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>5</CmdRef>
<Cmd>Replace</Cmd>
<Data>201</Data> <!-- 201 (Added) is used to indicate
that item is added as new. -->
</Status>
<Status>
<CmdID>12</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>6</CmdRef>
<Cmd>Replace</Cmd>
<Data>201</Data>
</Status>
<Status>
<CmdID>13</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>7</CmdRef>
<Cmd>Replace</Cmd>
<Data>201</Data>
</Status>
<Status>
<CmdID>15</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>4</CmdRef>
<TargetRef>./calendar/</TargetRef>
<SourceRef>./C\System\Data\Calendar</SourceRef>
<Cmd>Sync</Cmd>
<Data>200</Data>
</Status>
<Sync> <!-- an empty Sync is sent from server. -->
<CmdID>14</CmdID>
<Source>
<LocURI>./calendar/</LocURI>
</Source>
<Target>
<LocURI>./C\System\Data\Calendar</LocURI>
</Target>
</Sync>
<Final/>
</SyncBody>
</SyncML>
Final SyncML message from client with status to server's Sync command.
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>4</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
</Source>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:57471724140229</TargetRef>
<SourceRef>http://192.168.1.1:6666/</SourceRef>
<Data>200</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>14</CmdRef>
<Cmd>Sync</Cmd>
<TargetRef>./C\System\Data\Calendar</TargetRef>
<SourceRef>./calendar/</SourceRef>
<Data>200</Data>
</Status>
<Final/>
</SyncBody>
</SyncML>
Final message from SyncML server; no more commands issued.
<SyncML xmlns:n0="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>4</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>16</CmdID>
<MsgRef>4</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Data>212</Data>
</Status>
<Final/>
</SyncBody>
</SyncML>
See Also:
References : www.syncml.org
|
Title
| |
title
| |
created at
| - Wed, 25 Apr 2007 07:07:09 GMT
|
type
| |
content:encoded
| -
<H2 CLASS="sect1head">
<A NAME="syncml">SyncML</A>
</H2>
<P>SyncML is a protocol for synchronization of data collections
between two devices - a SyncML Client and SyncML Server using an
XML data representation. The client is typically some mobile device or
mobile PC. The Virtuoso server implements the SyncML server protocol over
HTTP.</P>
<P>The SyncML server maintains the data collections within the WebDAV
repository. The items (resources) in the collections (folders) represents
items found on the client, e.g. VCARD, vcalendar records. As the WebDAV
repository does not restrict the type of data that can be stored, likewise
there are no restrictions on the type of data that can be synchronized.
Also every WebDAV virtual directory can act as a SyncML server endpoint, the
SyncML processing is triggered via the <code>Content-Type</code>,
detected on the POST request (see below).</P>
<TABLE BORDER="1" WIDTH="610" CELLPADDING="5">
<TR>
<TD ALIGN="left">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="5" WIDTH="600">
<TR>
<TD WIDTH="70" ALIGN="right" VALIGN="top">
<STRONG>See Also:</STRONG>
</TD>
<TD ALIGN="left" WIDTH="500">
<P>
<A HREF="#syncmlschema">SyncML Schema Tables</A>
</P>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<BR />
<P>The SyncML server detects the following formats from the
<code>Content-Type</code> header string:</P>
<UL>
<LI>
<STRONG>
<code>application/vnd.syncml+wbxml</code>
</STRONG> - WBXML coded XML documents</LI>
<LI>
<STRONG>
<code>application/vnd.syncml+xml</code>
</STRONG> - plain text XML document</LI>
</UL>
<P>These are detected during the POST request to a WebDAV virtual directory
thus triggering SyncML processing. When a device makes creates
'<code>application/vnd.syncml+wbxml</code>' session,
the SyncML server will respond with the WBXML format. Otherwise
plain XML will be used to encode SyncML messages.</P>
<P>Basic and MD5 digest SyncML authorization schemes are supported.
The WebDAV enabled user accounts are used to perform authentication.</P>
<P>It is possible to query the HTTP authentication type supported by the
target device by assigning an authentication hook to a given virtual directory.
By default SyncML authentication is digest-md5, so HTTP authentication is
off (note that HTTP authentication is different from SyncML authentication).</P>
<P>The following synchronization methods are supported:</P>
<UL>
<LI>Two-way sync</LI>
<LI>Slow two-way sync</LI>
</UL>
<P>Every item sent from the client device is mapped to a WebDAV resource
under a given WebDAV collection. Every device database, such as contacts, calendar,
usually requires that a different WebDAV collection be specified because the devices
usually can not maintain items of different kinds with a single database. For
example, when synchronising the Contacts of a Nokia 9210 with the server,
we can specify <code>./contacts/</code>, and likewise
for the Calendar database, <code>./calendar/</code>.
This keeps VCARDS (contacts) and vCalendars in separate collections (folders) on
a given virtual directory. It is not possible to keep calendar and contacts
(for example) in the same WebDAV collection, unless the device supports such
items in a single database.</P>
<TABLE BORDER="1" WIDTH="610" CELLPADDING="5">
<TR>
<TD ALIGN="left">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="5" WIDTH="600">
<TR>
<TD WIDTH="70" ALIGN="right" VALIGN="top">
<STRONG>Important Note:</STRONG>
</TD>
<TD ALIGN="left" WIDTH="500">
<P>The target folders (Virtuoso server-side collections) must exists and
must be accessible by the WebDAV account used to authenticate against the
SyncML server. If credentials or permissions are insufficient then an
Error 403 (Forbidden) will be returned to the client.</P>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<BR />
<DIV CLASS="example">
<DIV CLASS="exampletitle">Example of a SyncML session</DIV>
<P>The client begins initial request</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
</Source>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Alert>
<CmdID>1</CmdID>
<Data>201</Data>
<Item>
<Target>
<LocURI>./calendar</LocURI>
</Target>
<Source>
<LocURI>./C\System\Data\Calendar</LocURI>
</Source>
<Meta>
<Anchor>
<Next>20031202T165103Z</Next>
</Anchor>
</Meta>
</Item>
</Alert>
<Put>
<CmdID>2</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Source>
<LocURI>./devinf10</LocURI>
</Source>
<Data>
<DevInf>
<VerDTD>1.0</VerDTD>
<Man>NOKIA</Man>
<Mod>9210</Mod>
<SwV>256</SwV>
<HwV>1.0</HwV>
<DevID>IMEI:57471724140229</DevID>
<DevTyp>phone</DevTyp>
....
</DevInf>
</Data>
</Item>
</Put>
<Get>
<CmdID>3</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Target>
<LocURI>./devinf10</LocURI>
</Target>
</Item>
</Get>
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
<P>Server rejects credential, because no credentials.</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML xmlns:n0="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Chal>
<Meta>
<Type xmlns:n2="syncml:metinf">syncml:auth-md5</Type>
<Format xmlns:n2="syncml:metinf">b64</Format>
<NextNonce xmlns:n2="syncml:metinf">NzcyYTgyMDRjMGM2NzRlYTZjYWVmNGY4ZjNjMGYzMDk=</NextNonce>
</Meta>
</Chal>
<Data>401</Data>
</Status>
....
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
<P>Client sends back credentials.</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>2</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
<LocName>imitko</LocName>
</Source>
<Cred>
<Meta>
<Format>b64</Format>
<Type>syncml:auth-md5</Type>
</Meta>
<Data>X8uGR8CX4ogw8Ux+ZWIzkg==</Data>
</Cred>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:57471724140229</TargetRef>
<SourceRef>http://192.168.1.1:6666/</SourceRef>
<Data>200</Data>
</Status>
<Alert>
<CmdID>2</CmdID>
<Data>201</Data>
<Item>
<Target>
<LocURI>./calendar</LocURI>
</Target>
<Source>
<LocURI>./C\System\Data\Calendar</LocURI>
</Source>
<Meta>
<Anchor>
<Next>20031202T165103Z</Next>
</Anchor>
</Meta>
</Item>
</Alert>
<Put>
<CmdID>3</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Source>
<LocURI>./devinf10</LocURI>
</Source>
<Data>
<DevInf>
<VerDTD>1.0</VerDTD>
<Man>NOKIA</Man>
<Mod>9210</Mod>
<SwV>256</SwV>
<HwV>1.0</HwV>
<DevID>IMEI:57471724140229</DevID>
<DevTyp>phone</DevTyp>
...
</DevInf>
</Data>
</Item>
</Put>
<Get>
<CmdID>4</CmdID>
<Meta>
<Type>application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Target>
<LocURI>./devinf10</LocURI>
</Target>
</Item>
</Get>
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
<P>Server accepts the request.</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML xmlns="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>2</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>5</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Data>212</Data> <!-- Authenticated for session -->
</Status>
<Status>
<CmdID>7</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>2</CmdRef>
<Cmd>Alert</Cmd>
<Data>200</Data> <!- two-way alert accepted, 'next' anchor echoed -->
<Item>
<Data>
<Anchor xmlns:n2="syncml:metinf">
<Next>20031202T165103Z</Next>
</Anchor>
</Data>
</Item>
</Status>
<Status>
<CmdID>8</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>3</CmdRef>
<Cmd>Put</Cmd>
<Data>200</Data> <!-- the 'put' command succeeded;
device info is written ->
</Status>
<Results> <!-- the following are server's device info -->
<CmdID>9</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>4</CmdRef>
<Meta>
<Type xmlns:n2="syncml:metinf">application/vnd.syncml-devinf+wbxml</Type>
</Meta>
<Item>
<Source>
<LocURI>./devinf10</LocURI>
</Source>
<Data>
<DevInf xmlns:n2="syncml:devinf">
<VerDTD>1.0</VerDTD>
<Man>OpenLink Software Ltd</Man>
<Mod>Virtuoso</Mod>
<OEM>OpenLink</OEM>
<FwV>3.5</FwV>
<SwV>2602</SwV>
<HwV>0</HwV>
<DevID>http://localhost/</DevID>
<DevTyp>server</DevTyp>
<SyncCap>
<SyncType>1</SyncType>
<SyncType>2</SyncType>
</SyncCap>
...
<UTC/>
<SupportLargeObjs/>
<SupportNumberOfChanges/>
</DevInf>
</Data>
</Item>
</Results>
<Alert>
<CmdID>6</CmdID>
<Data>201</Data> <!-- the ./calendar/ is new empty collection;
server asks client for slow two-way sync. -->
<Item>
<Target>
<LocURI>./C\System\Data\Calendar</LocURI>
</Target>
<Source>
<LocURI>./calendar/</LocURI>
</Source>
<Meta>
<Anchor xmlns:n2="syncml:metinf">
<Last>1970-01-01T00:00:00.000+02:00</Last>
<Next>2003-12-02T18:51:05.000+02:00</Next>
</Anchor>
</Meta>
</Item>
</Alert>
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
<P>Client sends to server all calendar items. See 'Sync' element below.</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>3</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
</Source>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:57471724140229</TargetRef>
<SourceRef>http://192.168.1.1:6666/</SourceRef>
<Data>200</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>9</CmdRef>
<Cmd>Results</Cmd>
<Data>200</Data>
</Status>
<Status>
<CmdID>3</CmdID>
<MsgRef>2</MsgRef>
<CmdRef>6</CmdRef>
<Cmd>Alert</Cmd>
<TargetRef>./C\System\Data\Calendar</TargetRef>
<SourceRef>./calendar/</SourceRef>
<Data>200</Data>
<Item>
<Data>
<Anchor>
<Next>2003-12-02T18:51:05.000+02:00</Next>
</Anchor>
</Data>
</Item>
</Status>
<Sync>
<CmdID>4</CmdID>
<Target>
<LocURI>./calendar</LocURI>
</Target>
<Source>
<LocURI>./C\System\Data\Calendar</LocURI>
</Source>
<Meta>
<Mem>
<FreeMem>7627614408</FreeMem>
<FreeID>59590737</FreeID>
</Mem>
</Meta>
<Replace> <!-- the client uses 'Replace' command -->
<CmdID>5</CmdID>
<Meta>
<Type>text/x-vcalendar</Type>
</Meta>
<Item>
<Source>
<LocURI>2</LocURI>
</Source>
<Data>
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
UID:2
DESCRIPTION:tests
DTSTART:20031127T090000
DTEND:20031127T090000
X-EPOCAGENDAENTRYTYPE:APPOINTMENT
CLASS:PUBLIC
DCREATED:20031128T000000
LAST-MODIFIED:20031201T123500
END:VEVENT
END:VCALENDAR
</Data>
</Item>
</Replace>
<Replace>
<CmdID>6</CmdID>
<Meta>
<Type>text/x-vcalendar</Type>
</Meta>
<Item>
<Source>
<LocURI>3</LocURI>
</Source>
<Data>
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
UID:3
DESCRIPTION:tests more
DTSTART:20031128T090000
DTEND:20031128T190000
X-EPOCAGENDAENTRYTYPE:APPOINTMENT
CLASS:PUBLIC
DCREATED:20031128T000000
LAST-MODIFIED:20031201T123500
END:VEVENT
END:VCALENDAR
</Data>
</Item>
</Replace>
<Replace>
<CmdID>7</CmdID>
<Meta>
<Type>text/x-vcalendar</Type>
</Meta>
<Item>
<Source>
<LocURI>5</LocURI>
</Source>
<Data>
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
UID:5
DESCRIPTION:today integration
DTSTART:20031201T090000
DTEND:20031201T090000
X-EPOCAGENDAENTRYTYPE:APPOINTMENT
CLASS:PUBLIC
DCREATED:20031201T000000
LAST-MODIFIED:20031201T125400
END:VEVENT
END:VCALENDAR
</Data>
</Item>
</Replace>
</Sync>
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
<P>Server stores new items.</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML xmlns:n0="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>3</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>10</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Data>212</Data>
</Status>
<Status>
<CmdID>11</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>5</CmdRef>
<Cmd>Replace</Cmd>
<Data>201</Data> <!-- 201 (Added) is used to indicate
that item is added as new. -->
</Status>
<Status>
<CmdID>12</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>6</CmdRef>
<Cmd>Replace</Cmd>
<Data>201</Data>
</Status>
<Status>
<CmdID>13</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>7</CmdRef>
<Cmd>Replace</Cmd>
<Data>201</Data>
</Status>
<Status>
<CmdID>15</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>4</CmdRef>
<TargetRef>./calendar/</TargetRef>
<SourceRef>./C\System\Data\Calendar</SourceRef>
<Cmd>Sync</Cmd>
<Data>200</Data>
</Status>
<Sync> <!-- an empty Sync is sent from server. -->
<CmdID>14</CmdID>
<Source>
<LocURI>./calendar/</LocURI>
</Source>
<Target>
<LocURI>./C\System\Data\Calendar</LocURI>
</Target>
</Sync>
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
<P>Final SyncML message from client with status to server's Sync command.</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>4</MsgID>
<Target>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Target>
<Source>
<LocURI>IMEI:57471724140229</LocURI>
</Source>
<Meta>
<MaxMsgSize>10000</MaxMsgSize>
</Meta>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:57471724140229</TargetRef>
<SourceRef>http://192.168.1.1:6666/</SourceRef>
<Data>200</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>3</MsgRef>
<CmdRef>14</CmdRef>
<Cmd>Sync</Cmd>
<TargetRef>./C\System\Data\Calendar</TargetRef>
<SourceRef>./calendar/</SourceRef>
<Data>200</Data>
</Status>
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
<P>Final message from SyncML server; no more commands issued.</P>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD BGCOLOR="#f0f0f0">
<PRE>
<SyncML xmlns:n0="syncml:SYNCML1.0">
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>88</SessionID>
<MsgID>4</MsgID>
<Target>
<LocURI>IMEI:57471724140229</LocURI>
</Target>
<Source>
<LocURI>http://192.168.1.1:6666/</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>16</CmdID>
<MsgRef>4</MsgRef>
<CmdRef>0</CmdRef>
<TargetRef>http://192.168.1.1:6666/</TargetRef>
<SourceRef>IMEI:57471724140229</SourceRef>
<Cmd>SyncHdr</Cmd>
<Data>212</Data>
</Status>
<Final/>
</SyncBody>
</SyncML>
</PRE>
</TD>
</TR>
</TABLE>
<BR />
</DIV>
<TABLE BORDER="1" WIDTH="610" CELLPADDING="5">
<TR>
<TD ALIGN="left">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="5" WIDTH="600">
<TR>
<TD WIDTH="70" ALIGN="right" VALIGN="top">
<STRONG>See Also:</STRONG>
</TD>
<TD ALIGN="left" WIDTH="500">
<P>
<A HREF="http://www.syncml.org/">References : www.syncml.org</A>
</P>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<BR />
|
is topic
of | |
is links to
of | |
is container of
of | |