[ome-devel] ome access with c++
Harry Hochheiser
hsh at nih.gov
Thu Oct 6 15:02:05 BST 2005
Gerhard:
Ok. Let me see if I can work you through this in a bit more detail.
First, a note of clarification. Dispatcher.pm is obsolete code that
is no longer used by the XMl-RPC api and should probably be removed
- our apologies for any confusion this may have caused.
In terms of what you are trying to do, the first step is indeed
createSession. A typical request might look like the following:
<methodCall>
<methodName>createSession</methodName>
<params>
<param><value>hsh</value></param>
<param><value>**PASSWORD***</value></param>
</params>
</methodCall>
The server response to this will return the session key:
<methodResponse>
<params>
<param> <value>
<string>5d8e5b4a62b99a8b7ed8902cd2361765</string>
</value></param>
</params>
</methodResponse>
The full request for an image is given below. The important part is
the beginning, which sepcifies the dispatch method, the session key,
the retrieveObject submethod, the object type, and the identifying
info for the image.
<methodCall><methodName>dispatch</methodName>
<params>
<param><value>5d8e5b4a62b99a8b7ed8902cd2361765</value></param>
<param><value>retrieveObject</value></param>
<param><value>Image</value></param>
<param>
<value>
<struct>
<member>
<name>id</name>
<value><int>1</int></value>
</member>
</struct>
</value>
</param>
......
The remainder of the request specifies the fields that should be
returned. For sake of brevity, I won't describe those in detail here,
but i'm happy to do so at a later point if it would be helpful.
The response is also given below.
The import thing to note about this request is the general form:
1) methodName is dispatch.
2) first param: session key
3) second param: sub-method name: one of the procedures supported by
the facades
4) subsequent params: arguments to the methods in the params.
I hope this helps clear things up.
As for your specific XML-RPC examples, I'm not quite sure why/how
they worked or didn't work. The approach that I describe here is the
one that is used inthe OME-JAVA code that supports our Shoola
clients, and it's probably the only approach that will function
reliably. (In other words, if other schemes work, it's purely
coincidental).
-harry
--------------
request for image 1
<methodCall><methodName>dispatch</methodName>
<params>
<param><value>5d8e5b4a62b99a8b7ed8902cd2361765</value></param>
<param><value>retrieveObject</value></param>
<param><value>Image</value></param>
<param>
<value>
<struct>
<member>
<name>id</name>
<value><int>1</int></value>
</member>
</struct>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>default_pixels</name>
<value>
<array>
<data>
<value>id</value>
<value>ImageServerID</value>
<value>Repository</value>
</data>
</array>
</value>
</member>
<member>
<name>.</name>
<value>
<array>
<data>
<value>id</value>
<value>name</value>
<value>default_pixels</value>
</data>
</array>
</value>
</member>
<member>
<name>default_pixels.Repository</name>
<value>
<array>
<data>
<value>ImageServerURL</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
image request response:
---------------------------------
<methodResponse>
<params>
<param><value><struct>
<member><name>name</name><value><string>cb_3</string></value></
member>
<member><name>id</name><value><i4>1</i4></value></member>
<member><name>default_pixels</name><value><struct>
<member><name>ImageServerID</name><value><i4>2</i4></value></
member>
<member><name>semantic_type</name><value><struct>
<member><name>granularity</name><value><string>I</
string></value></member>
<member><name>name</name><value><string>Pixels</
string></value></member>
<member><name>id</name><value><i4>36</i4></value></
member>
</struct></value>
</member>
<member><name>id</name><value><i4>4</i4></value></member>
<member><name>Repository</name><value><struct>
<member><name>ImageServerURL</
name><value><string>http://hsh-tibook.local/cgi-bin/omeis</string></
value></member>
<member><name>semantic_type</name><value><struct>
<member><name>granularity</name><value><string>G</
string></value></member>
<member><name>name</name><value><string>Repository</
string></value></member>
<member><name>id</name><value><i4>1</i4></value></
member>
</struct></value>
</member>
<member><name>id</name><value><i4>14162</i4></value></
member>
</struct></value>
</member>
</struct></value>
</member>
</struct></value>
</param>
</params>
</methodResponse>
More information about the ome-devel
mailing list