Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 71d40963b505df4524269198e237b3e3 > files > 890

virtuoso-opensource-doc-6.1.4-2.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head profile="http://internetalchemy.org/2003/02/profile">
  <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" />
  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
  <meta name="dc.title" content="15. Web Services" />
  <meta name="dc.subject" content="15. Web Services" />
  <meta name="dc.creator" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" />
  <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="parent" href="webservices.html" title="Chapter Contents" />
  <link rel="prev" href="xmlrpc.html" title="XML-RPC support" />
  <link rel="next" href="uddi.html" title="UDDI" />
  <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="doc.css" />
  <link rel="stylesheet" type="text/css" href="/doc/translation.css" />
  <title>15. Web Services</title>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
  <meta name="author" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="copyright" content="OpenLink Software, 1999 - 2009" />
  <meta name="keywords" content="" />
  <meta name="GENERATOR" content="OpenLink XSLT Team" />
 </head>
 <body>
  <div id="header">
    <a name="syncml" />
    <img src="../images/misc/logo.jpg" alt="" />
    <h1>15. Web Services</h1>
  </div>
  <div id="navbartop">
   <div>
      <a class="link" href="webservices.html">Chapter Contents</a> | <a class="link" href="xmlrpc.html" title="XML-RPC support">Prev</a> | <a class="link" href="uddi.html" title="UDDI">Next</a>
   </div>
  </div>
  <div id="currenttoc">
   <form method="post" action="/doc/adv_search.vspx">
    <div class="search">Keyword Search: <br />
        <input type="text" name="q" /> <input type="submit" name="go" value="Go" />
    </div>
   </form>
   <div>
      <a href="http://www.openlinksw.com/">www.openlinksw.com</a>
   </div>
   <div>
      <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a>
   </div>
    <br />
   <div>
      <a href="index.html">Book Home</a>
   </div>
    <br />
   <div>
      <a href="contents.html">Contents</a>
   </div>
   <div>
      <a href="preface.html">Preface</a>
   </div>
    <br />
   <div class="selected">
      <a href="webservices.html">Web Services</a>
   </div>
    <br />
   <div>
      <a href="soap.html">SOAP</a>
   </div>
   <div>
      <a href="wsdl.html">WSDL</a>
   </div>
   <div>
      <a href="vfoafssl.html">WebID Protocol Support</a>
   </div>
   <div>
      <a href="voauth.html">OAuth Support</a>
   </div>
   <div>
      <a href="vwsssupport.html">WS-Security (WSS) Support in Virtuoso SOAP Server</a>
   </div>
   <div>
      <a href="ws-routing.html">Web Services Routing Protocol (WS-Routing)</a>
   </div>
   <div>
      <a href="warm.html">Web Services Reliable Messaging Protocol (WS-ReliableMessaging)</a>
   </div>
   <div>
      <a href="vwstrust.html">Web Services Trust Protocol (WS-Trust)</a>
   </div>
   <div>
      <a href="xmlxmla.html">XML for Analysis Provider</a>
   </div>
   <div>
      <a href="xmlrpc.html">XML-RPC support</a>
   </div>
   <div class="selected">
      <a href="syncml.html">SyncML</a>
   </div>
   <div>
      <a href="uddi.html">UDDI</a>
   </div>
   <div>
      <a href="expwsmodules.html">Exposing Persistent Stored Modules as Web Services</a>
   </div>
   <div>
      <a href="vsmx.html">Testing Web Published Web Services</a>
   </div>
   <div>
      <a href="bpel.html">BPEL Reference</a>
   </div>
   <div>
      <a href="xsql.html">XSQL</a>
   </div>
    <br />
  </div>
  <div id="text">
    <a name="syncml" />
    <h2>15.11. SyncML</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 <span class="computeroutput">Content-Type</span>,
detected on the POST request (see below).</p>

<div class="tip">
      <div class="tiptitle">See Also:</div>
  <p>
        <a href="systemtables.html#syncmlschema">SyncML Schema Tables</a>
      </p>
    </div>

<p>The SyncML server detects the following formats from the
<span class="computeroutput">Content-Type</span> header string:</p>

  <ul>
      <li>
     <strong>
          <span class="computeroutput">application/vnd.syncml+wbxml</span>
     </strong> - WBXML coded XML documents</li>
      <li>
     <strong>
          <span class="computeroutput">application/vnd.syncml+xml</span>
     </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
&#39;<span class="computeroutput">application/vnd.syncml+wbxml</span>&#39; 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 synchronizing the Contacts of a Nokia 9210 with the server,
we can specify <span class="computeroutput">./contacts/</span>, and likewise
for the Calendar database, <span class="computeroutput">./calendar/</span>.
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>

<div class="note">
      <div class="notetitle">Important Note:</div>
  <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>
    </div>

<a name="ex_syncmlsession" />
    <div class="example">
      <div class="exampletitle">Example of a SyncML session</div>

<p>The client begins initial request</p>

<div>
        <pre class="programlisting">
  &lt;SyncML&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;1&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
      &lt;/Source&gt;
      &lt;Meta&gt;
        &lt;MaxMsgSize&gt;10000&lt;/MaxMsgSize&gt;
      &lt;/Meta&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Alert&gt;
        &lt;CmdID&gt;1&lt;/CmdID&gt;
        &lt;Data&gt;201&lt;/Data&gt;
        &lt;Item&gt;
          &lt;Target&gt;
            &lt;LocURI&gt;./calendar&lt;/LocURI&gt;
          &lt;/Target&gt;
          &lt;Source&gt;
            &lt;LocURI&gt;./C\System\Data\Calendar&lt;/LocURI&gt;
          &lt;/Source&gt;
          &lt;Meta&gt;
            &lt;Anchor&gt;
              &lt;Next&gt;20031202T165103Z&lt;/Next&gt;
            &lt;/Anchor&gt;
          &lt;/Meta&gt;
        &lt;/Item&gt;
      &lt;/Alert&gt;
      &lt;Put&gt;
        &lt;CmdID&gt;2&lt;/CmdID&gt;
        &lt;Meta&gt;
          &lt;Type&gt;application/vnd.syncml-devinf+wbxml&lt;/Type&gt;
        &lt;/Meta&gt;
        &lt;Item&gt;
          &lt;Source&gt;
            &lt;LocURI&gt;./devinf10&lt;/LocURI&gt;
          &lt;/Source&gt;
          &lt;Data&gt;
            &lt;DevInf&gt;
              &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
              &lt;Man&gt;NOKIA&lt;/Man&gt;
              &lt;Mod&gt;9210&lt;/Mod&gt;
              &lt;SwV&gt;256&lt;/SwV&gt;
              &lt;HwV&gt;1.0&lt;/HwV&gt;
              &lt;DevID&gt;IMEI:57471724140229&lt;/DevID&gt;
              &lt;DevTyp&gt;phone&lt;/DevTyp&gt;
	      ....
            &lt;/DevInf&gt;
          &lt;/Data&gt;
        &lt;/Item&gt;
      &lt;/Put&gt;
      &lt;Get&gt;
        &lt;CmdID&gt;3&lt;/CmdID&gt;
        &lt;Meta&gt;
          &lt;Type&gt;application/vnd.syncml-devinf+wbxml&lt;/Type&gt;
        &lt;/Meta&gt;
        &lt;Item&gt;
          &lt;Target&gt;
            &lt;LocURI&gt;./devinf10&lt;/LocURI&gt;
          &lt;/Target&gt;
        &lt;/Item&gt;
      &lt;/Get&gt;
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>

<p>Server rejects credential, because no credentials.</p>

<div>
        <pre class="programlisting">
  &lt;SyncML xmlns:n0=&quot;syncml:SYNCML1.0&quot;&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;1&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Source&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;1&lt;/CmdID&gt;
        &lt;MsgRef&gt;1&lt;/MsgRef&gt;
        &lt;CmdRef&gt;0&lt;/CmdRef&gt;
        &lt;TargetRef&gt;http://192.168.1.1:6666/&lt;/TargetRef&gt;
        &lt;SourceRef&gt;IMEI:57471724140229&lt;/SourceRef&gt;
        &lt;Cmd&gt;SyncHdr&lt;/Cmd&gt;
        &lt;Chal&gt;
          &lt;Meta&gt;
            &lt;Type xmlns:n2=&quot;syncml:metinf&quot;&gt;syncml:auth-md5&lt;/Type&gt;
            &lt;Format xmlns:n2=&quot;syncml:metinf&quot;&gt;b64&lt;/Format&gt;
            &lt;NextNonce xmlns:n2=&quot;syncml:metinf&quot;&gt;NzcyYTgyMDRjMGM2NzRlYTZjYWVmNGY4ZjNjMGYzMDk=&lt;/NextNonce&gt;
          &lt;/Meta&gt;
        &lt;/Chal&gt;
        &lt;Data&gt;401&lt;/Data&gt;
      &lt;/Status&gt;
      ....
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>

<p>Client sends back credentials.</p>

<div>
        <pre class="programlisting">
  &lt;SyncML&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;2&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
        &lt;LocName&gt;imitko&lt;/LocName&gt;
      &lt;/Source&gt;
      &lt;Cred&gt;
        &lt;Meta&gt;
          &lt;Format&gt;b64&lt;/Format&gt;
          &lt;Type&gt;syncml:auth-md5&lt;/Type&gt;
        &lt;/Meta&gt;
        &lt;Data&gt;X8uGR8CX4ogw8Ux+ZWIzkg==&lt;/Data&gt;
      &lt;/Cred&gt;
      &lt;Meta&gt;
        &lt;MaxMsgSize&gt;10000&lt;/MaxMsgSize&gt;
      &lt;/Meta&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;1&lt;/CmdID&gt;
        &lt;MsgRef&gt;1&lt;/MsgRef&gt;
        &lt;CmdRef&gt;0&lt;/CmdRef&gt;
        &lt;Cmd&gt;SyncHdr&lt;/Cmd&gt;
        &lt;TargetRef&gt;IMEI:57471724140229&lt;/TargetRef&gt;
        &lt;SourceRef&gt;http://192.168.1.1:6666/&lt;/SourceRef&gt;
        &lt;Data&gt;200&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Alert&gt;
        &lt;CmdID&gt;2&lt;/CmdID&gt;
        &lt;Data&gt;201&lt;/Data&gt;
        &lt;Item&gt;
          &lt;Target&gt;
            &lt;LocURI&gt;./calendar&lt;/LocURI&gt;
          &lt;/Target&gt;
          &lt;Source&gt;
            &lt;LocURI&gt;./C\System\Data\Calendar&lt;/LocURI&gt;
          &lt;/Source&gt;
          &lt;Meta&gt;
            &lt;Anchor&gt;
              &lt;Next&gt;20031202T165103Z&lt;/Next&gt;
            &lt;/Anchor&gt;
          &lt;/Meta&gt;
        &lt;/Item&gt;
      &lt;/Alert&gt;
      &lt;Put&gt;
        &lt;CmdID&gt;3&lt;/CmdID&gt;
        &lt;Meta&gt;
          &lt;Type&gt;application/vnd.syncml-devinf+wbxml&lt;/Type&gt;
        &lt;/Meta&gt;
        &lt;Item&gt;
          &lt;Source&gt;
            &lt;LocURI&gt;./devinf10&lt;/LocURI&gt;
          &lt;/Source&gt;
          &lt;Data&gt;
            &lt;DevInf&gt;
              &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
              &lt;Man&gt;NOKIA&lt;/Man&gt;
              &lt;Mod&gt;9210&lt;/Mod&gt;
              &lt;SwV&gt;256&lt;/SwV&gt;
              &lt;HwV&gt;1.0&lt;/HwV&gt;
              &lt;DevID&gt;IMEI:57471724140229&lt;/DevID&gt;
              &lt;DevTyp&gt;phone&lt;/DevTyp&gt;
	      ...
            &lt;/DevInf&gt;
          &lt;/Data&gt;
        &lt;/Item&gt;
      &lt;/Put&gt;
      &lt;Get&gt;
        &lt;CmdID&gt;4&lt;/CmdID&gt;
        &lt;Meta&gt;
          &lt;Type&gt;application/vnd.syncml-devinf+wbxml&lt;/Type&gt;
        &lt;/Meta&gt;
        &lt;Item&gt;
          &lt;Target&gt;
            &lt;LocURI&gt;./devinf10&lt;/LocURI&gt;
          &lt;/Target&gt;
        &lt;/Item&gt;
      &lt;/Get&gt;
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>

<p>Server accepts the request.</p>

<div>
        <pre class="programlisting">
  &lt;SyncML xmlns=&quot;syncml:SYNCML1.0&quot;&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;2&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Source&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;5&lt;/CmdID&gt;
        &lt;MsgRef&gt;2&lt;/MsgRef&gt;
        &lt;CmdRef&gt;0&lt;/CmdRef&gt;
        &lt;TargetRef&gt;http://192.168.1.1:6666/&lt;/TargetRef&gt;
        &lt;SourceRef&gt;IMEI:57471724140229&lt;/SourceRef&gt;
        &lt;Cmd&gt;SyncHdr&lt;/Cmd&gt;
        &lt;Data&gt;212&lt;/Data&gt; &lt;!-- Authenticated for session --&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;7&lt;/CmdID&gt;
        &lt;MsgRef&gt;2&lt;/MsgRef&gt;
        &lt;CmdRef&gt;2&lt;/CmdRef&gt;
        &lt;Cmd&gt;Alert&lt;/Cmd&gt;
        &lt;Data&gt;200&lt;/Data&gt; &lt;!- two-way alert accepted, &#39;next&#39; anchor echoed --&gt;
        &lt;Item&gt;
          &lt;Data&gt;
            &lt;Anchor xmlns:n2=&quot;syncml:metinf&quot;&gt;
              &lt;Next&gt;20031202T165103Z&lt;/Next&gt;
            &lt;/Anchor&gt;
          &lt;/Data&gt;
        &lt;/Item&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;8&lt;/CmdID&gt;
        &lt;MsgRef&gt;2&lt;/MsgRef&gt;
        &lt;CmdRef&gt;3&lt;/CmdRef&gt;
        &lt;Cmd&gt;Put&lt;/Cmd&gt;
        &lt;Data&gt;200&lt;/Data&gt; &lt;!-- the &#39;put&#39; command succeeded;
		                      device info is written -&gt;
      &lt;/Status&gt;
      &lt;Results&gt; &lt;!-- the following are server&#39;s device info  --&gt;
        &lt;CmdID&gt;9&lt;/CmdID&gt;
        &lt;MsgRef&gt;2&lt;/MsgRef&gt;
        &lt;CmdRef&gt;4&lt;/CmdRef&gt;
        &lt;Meta&gt;
          &lt;Type xmlns:n2=&quot;syncml:metinf&quot;&gt;application/vnd.syncml-devinf+wbxml&lt;/Type&gt;
        &lt;/Meta&gt;
        &lt;Item&gt;
          &lt;Source&gt;
            &lt;LocURI&gt;./devinf10&lt;/LocURI&gt;
          &lt;/Source&gt;
          &lt;Data&gt;
            &lt;DevInf xmlns:n2=&quot;syncml:devinf&quot;&gt;
              &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
              &lt;Man&gt;OpenLink Software Ltd&lt;/Man&gt;
              &lt;Mod&gt;Virtuoso&lt;/Mod&gt;
              &lt;OEM&gt;OpenLink&lt;/OEM&gt;
              &lt;FwV&gt;3.5&lt;/FwV&gt;
              &lt;SwV&gt;2602&lt;/SwV&gt;
              &lt;HwV&gt;0&lt;/HwV&gt;
              &lt;DevID&gt;http://localhost/&lt;/DevID&gt;
              &lt;DevTyp&gt;server&lt;/DevTyp&gt;
              &lt;SyncCap&gt;
                &lt;SyncType&gt;1&lt;/SyncType&gt;
                &lt;SyncType&gt;2&lt;/SyncType&gt;
              &lt;/SyncCap&gt;
	      ...
              &lt;UTC/&gt;
              &lt;SupportLargeObjs/&gt;
              &lt;SupportNumberOfChanges/&gt;
            &lt;/DevInf&gt;
          &lt;/Data&gt;
        &lt;/Item&gt;
      &lt;/Results&gt;
      &lt;Alert&gt;
        &lt;CmdID&gt;6&lt;/CmdID&gt;
        &lt;Data&gt;201&lt;/Data&gt; &lt;!-- the ./calendar/ is new empty collection;
		                      server asks client for slow two-way sync.  --&gt;
        &lt;Item&gt;
          &lt;Target&gt;
            &lt;LocURI&gt;./C\System\Data\Calendar&lt;/LocURI&gt;
          &lt;/Target&gt;
          &lt;Source&gt;
            &lt;LocURI&gt;./calendar/&lt;/LocURI&gt;
          &lt;/Source&gt;
          &lt;Meta&gt;
            &lt;Anchor xmlns:n2=&quot;syncml:metinf&quot;&gt;
              &lt;Last&gt;1970-01-01T00:00:00.000+02:00&lt;/Last&gt;
              &lt;Next&gt;2003-12-02T18:51:05.000+02:00&lt;/Next&gt;
            &lt;/Anchor&gt;
          &lt;/Meta&gt;
        &lt;/Item&gt;
      &lt;/Alert&gt;
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>

<p>Client sends to server all calendar items. See &#39;Sync&#39; element below.</p>

<div>
        <pre class="programlisting">
  &lt;SyncML&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;3&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
      &lt;/Source&gt;
      &lt;Meta&gt;
        &lt;MaxMsgSize&gt;10000&lt;/MaxMsgSize&gt;
      &lt;/Meta&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;1&lt;/CmdID&gt;
        &lt;MsgRef&gt;2&lt;/MsgRef&gt;
        &lt;CmdRef&gt;0&lt;/CmdRef&gt;
        &lt;Cmd&gt;SyncHdr&lt;/Cmd&gt;
        &lt;TargetRef&gt;IMEI:57471724140229&lt;/TargetRef&gt;
        &lt;SourceRef&gt;http://192.168.1.1:6666/&lt;/SourceRef&gt;
        &lt;Data&gt;200&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;2&lt;/CmdID&gt;
        &lt;MsgRef&gt;2&lt;/MsgRef&gt;
        &lt;CmdRef&gt;9&lt;/CmdRef&gt;
        &lt;Cmd&gt;Results&lt;/Cmd&gt;
        &lt;Data&gt;200&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;3&lt;/CmdID&gt;
        &lt;MsgRef&gt;2&lt;/MsgRef&gt;
        &lt;CmdRef&gt;6&lt;/CmdRef&gt;
        &lt;Cmd&gt;Alert&lt;/Cmd&gt;
        &lt;TargetRef&gt;./C\System\Data\Calendar&lt;/TargetRef&gt;
        &lt;SourceRef&gt;./calendar/&lt;/SourceRef&gt;
        &lt;Data&gt;200&lt;/Data&gt;
        &lt;Item&gt;
          &lt;Data&gt;
            &lt;Anchor&gt;
              &lt;Next&gt;2003-12-02T18:51:05.000+02:00&lt;/Next&gt;
            &lt;/Anchor&gt;
          &lt;/Data&gt;
        &lt;/Item&gt;
      &lt;/Status&gt;
      &lt;Sync&gt;
        &lt;CmdID&gt;4&lt;/CmdID&gt;
        &lt;Target&gt;
          &lt;LocURI&gt;./calendar&lt;/LocURI&gt;
        &lt;/Target&gt;
        &lt;Source&gt;
          &lt;LocURI&gt;./C\System\Data\Calendar&lt;/LocURI&gt;
        &lt;/Source&gt;
        &lt;Meta&gt;
          &lt;Mem&gt;
            &lt;FreeMem&gt;7627614408&lt;/FreeMem&gt;
            &lt;FreeID&gt;59590737&lt;/FreeID&gt;
          &lt;/Mem&gt;
        &lt;/Meta&gt;
        &lt;Replace&gt; &lt;!-- the client uses &#39;Replace&#39; command --&gt;
          &lt;CmdID&gt;5&lt;/CmdID&gt;
          &lt;Meta&gt;
            &lt;Type&gt;text/x-vcalendar&lt;/Type&gt;
          &lt;/Meta&gt;
          &lt;Item&gt;
            &lt;Source&gt;
              &lt;LocURI&gt;2&lt;/LocURI&gt;
            &lt;/Source&gt;
            &lt;Data&gt;
		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
            &lt;/Data&gt;
          &lt;/Item&gt;
        &lt;/Replace&gt;
        &lt;Replace&gt;
          &lt;CmdID&gt;6&lt;/CmdID&gt;
          &lt;Meta&gt;
            &lt;Type&gt;text/x-vcalendar&lt;/Type&gt;
          &lt;/Meta&gt;
          &lt;Item&gt;
            &lt;Source&gt;
              &lt;LocURI&gt;3&lt;/LocURI&gt;
            &lt;/Source&gt;
            &lt;Data&gt;
		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
            &lt;/Data&gt;
          &lt;/Item&gt;
        &lt;/Replace&gt;
        &lt;Replace&gt;
          &lt;CmdID&gt;7&lt;/CmdID&gt;
          &lt;Meta&gt;
            &lt;Type&gt;text/x-vcalendar&lt;/Type&gt;
          &lt;/Meta&gt;
          &lt;Item&gt;
            &lt;Source&gt;
              &lt;LocURI&gt;5&lt;/LocURI&gt;
            &lt;/Source&gt;
            &lt;Data&gt;
		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
            &lt;/Data&gt;
          &lt;/Item&gt;
        &lt;/Replace&gt;
      &lt;/Sync&gt;
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>

<p>Server stores new items.</p>

<div>
        <pre class="programlisting">
  &lt;SyncML xmlns:n0=&quot;syncml:SYNCML1.0&quot;&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;3&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Source&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;10&lt;/CmdID&gt;
        &lt;MsgRef&gt;3&lt;/MsgRef&gt;
        &lt;CmdRef&gt;0&lt;/CmdRef&gt;
        &lt;TargetRef&gt;http://192.168.1.1:6666/&lt;/TargetRef&gt;
        &lt;SourceRef&gt;IMEI:57471724140229&lt;/SourceRef&gt;
        &lt;Cmd&gt;SyncHdr&lt;/Cmd&gt;
        &lt;Data&gt;212&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;11&lt;/CmdID&gt;
        &lt;MsgRef&gt;3&lt;/MsgRef&gt;
        &lt;CmdRef&gt;5&lt;/CmdRef&gt;
        &lt;Cmd&gt;Replace&lt;/Cmd&gt;
        &lt;Data&gt;201&lt;/Data&gt; &lt;!-- 201 (Added) is used to indicate
		                      that item is added as new. --&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;12&lt;/CmdID&gt;
        &lt;MsgRef&gt;3&lt;/MsgRef&gt;
        &lt;CmdRef&gt;6&lt;/CmdRef&gt;
        &lt;Cmd&gt;Replace&lt;/Cmd&gt;
        &lt;Data&gt;201&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;13&lt;/CmdID&gt;
        &lt;MsgRef&gt;3&lt;/MsgRef&gt;
        &lt;CmdRef&gt;7&lt;/CmdRef&gt;
        &lt;Cmd&gt;Replace&lt;/Cmd&gt;
        &lt;Data&gt;201&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;15&lt;/CmdID&gt;
        &lt;MsgRef&gt;3&lt;/MsgRef&gt;
        &lt;CmdRef&gt;4&lt;/CmdRef&gt;
        &lt;TargetRef&gt;./calendar/&lt;/TargetRef&gt;
        &lt;SourceRef&gt;./C\System\Data\Calendar&lt;/SourceRef&gt;
        &lt;Cmd&gt;Sync&lt;/Cmd&gt;
        &lt;Data&gt;200&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Sync&gt; &lt;!-- an empty Sync is sent from server. --&gt;
        &lt;CmdID&gt;14&lt;/CmdID&gt;
        &lt;Source&gt;
          &lt;LocURI&gt;./calendar/&lt;/LocURI&gt;
        &lt;/Source&gt;
        &lt;Target&gt;
          &lt;LocURI&gt;./C\System\Data\Calendar&lt;/LocURI&gt;
        &lt;/Target&gt;
      &lt;/Sync&gt;
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>

<p>Final SyncML message from client with status to server&#39;s Sync command.</p>

<div>
        <pre class="programlisting">
  &lt;SyncML&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;4&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
      &lt;/Source&gt;
      &lt;Meta&gt;
        &lt;MaxMsgSize&gt;10000&lt;/MaxMsgSize&gt;
      &lt;/Meta&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;1&lt;/CmdID&gt;
        &lt;MsgRef&gt;3&lt;/MsgRef&gt;
        &lt;CmdRef&gt;0&lt;/CmdRef&gt;
        &lt;Cmd&gt;SyncHdr&lt;/Cmd&gt;
        &lt;TargetRef&gt;IMEI:57471724140229&lt;/TargetRef&gt;
        &lt;SourceRef&gt;http://192.168.1.1:6666/&lt;/SourceRef&gt;
        &lt;Data&gt;200&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;2&lt;/CmdID&gt;
        &lt;MsgRef&gt;3&lt;/MsgRef&gt;
        &lt;CmdRef&gt;14&lt;/CmdRef&gt;
        &lt;Cmd&gt;Sync&lt;/Cmd&gt;
        &lt;TargetRef&gt;./C\System\Data\Calendar&lt;/TargetRef&gt;
        &lt;SourceRef&gt;./calendar/&lt;/SourceRef&gt;
        &lt;Data&gt;200&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>

<p>Final message from SyncML server; no more commands issued.</p>

<div>
        <pre class="programlisting">
  &lt;SyncML xmlns:n0=&quot;syncml:SYNCML1.0&quot;&gt;
    &lt;SyncHdr&gt;
      &lt;VerDTD&gt;1.0&lt;/VerDTD&gt;
      &lt;VerProto&gt;SyncML/1.0&lt;/VerProto&gt;
      &lt;SessionID&gt;88&lt;/SessionID&gt;
      &lt;MsgID&gt;4&lt;/MsgID&gt;
      &lt;Target&gt;
        &lt;LocURI&gt;IMEI:57471724140229&lt;/LocURI&gt;
      &lt;/Target&gt;
      &lt;Source&gt;
        &lt;LocURI&gt;http://192.168.1.1:6666/&lt;/LocURI&gt;
      &lt;/Source&gt;
    &lt;/SyncHdr&gt;
    &lt;SyncBody&gt;
      &lt;Status&gt;
        &lt;CmdID&gt;16&lt;/CmdID&gt;
        &lt;MsgRef&gt;4&lt;/MsgRef&gt;
        &lt;CmdRef&gt;0&lt;/CmdRef&gt;
        &lt;TargetRef&gt;http://192.168.1.1:6666/&lt;/TargetRef&gt;
        &lt;SourceRef&gt;IMEI:57471724140229&lt;/SourceRef&gt;
        &lt;Cmd&gt;SyncHdr&lt;/Cmd&gt;
        &lt;Data&gt;212&lt;/Data&gt;
      &lt;/Status&gt;
      &lt;Final/&gt;
    &lt;/SyncBody&gt;
  &lt;/SyncML&gt;
</pre>
      </div>
</div>

<div class="tip">
      <div class="tiptitle">See Also:</div>
  <p>
        <a href="http://www.syncml.org/">References : www.syncml.org</a>
      </p>
    </div>

<table border="0" width="90%" id="navbarbottom">
    <tr>
        <td align="left" width="33%">
          <a href="xmlrpc.html" title="XML-RPC support">Previous</a>
          <br />XML-RPC support</td>
     <td align="center" width="34%">
          <a href="webservices.html">Chapter Contents</a>
     </td>
        <td align="right" width="33%">
          <a href="uddi.html" title="UDDI">Next</a>
          <br />UDDI</td>
    </tr>
    </table>
  </div>
  <div id="footer">
    <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div>
   <div id="validation">
    <a href="http://validator.w3.org/check/referer">
        <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" />
    </a>
    <a href="http://jigsaw.w3.org/css-validator/">
        <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" />
    </a>
   </div>
  </div>
 </body>
</html>