You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-users@xml.apache.org by Suzanne Little <sl...@dstc.edu.au> on 2004/12/13 04:40:49 UTC

using xmlrpc interface

Hi,

I'm trying to use the xmlrpc interface to interact with xindice but the 
only response I get is 
"xmlrpclib.ProtocolError: <ProtocolError for localhost:8080/xindice: 302 
Moved Temporarily>" when using python
or
"XML-RPC Fault #5: Didn't receive 200 OK from remote server. (HTTP/1.1 302 
Moved Temporarily)" when using php.

Configuration details are:
Redhat linux kernel 2.4.18-27.8.0
java jdk1.3.1_07
tomcat 5.0.19
xindice - tried both the 1.1b4 release and cvs source 1.1b5-dev

For xmlrpc access I tried both python 2.2.1 with the standard xmlrpclib
(which I want to use) and php 4.3.4 with phpxmlrpc library (just in case
it was python specific).

Example session:
>>> import xmlrpclib
>>> server = xmlrpclib.Server("http://localhost:8080/xindice")
>>> server.execute("db.GetDocumentCount", ('/db/testing'))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.2/xmlrpclib.py", line 821, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.2/xmlrpclib.py", line 975, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.2/xmlrpclib.py", line 848, in request
    headers
xmlrpclib.ProtocolError: <ProtocolError for localhost:8080/xindice: 302 Moved Temporarily>

I can access the xindice installation via the browser 
(http://localhost:8080/xindice) and via the commandline tools (xindice ac 
-c xmldb:xindice://localhost:8080/db -n testing).

Any suggestions? 

Thanks,
Suzanne


Re: using xmlrpc interface

Posted by Suzanne Little <sl...@dstc.edu.au>.
Hi,

I'm replying to my own email since I've found a solution and there's 
nothing worse than searching for a problem, finding the question but there 
is no answer ...

I still have no idea why I get a 302 Moved Temporarily error but if I use 
Jetty on port 8888 instead of tomcat the following script works.

$ ./$XINDICE_HOME/xindice.sh start
Starting Xindice - Log files are under 
$XINDICE_HOME/logs

Xindice is running with PID XXXX
$ python2.3
>>> import xmlrpclib
>>> server = xmlrpclib.Server("http://localhost:8888/xindice")
>>> result = server.run({"message":"ListCollections", "collection":"/db"})
>>> print result
{'result': ['trial', 'system', 'meta', 'test']}

The syntax of the message passing is a bit different to the examples I 
could find. 

Hope this helps someone! :)
Suzanne

This is my test script
------------------------------------
#!/usr/bin/python

import xmlrpclib

def main():
    print "---start tests---"
    server = xmlrpclib.Server("http://localhost:8888/xindice")
    print "---list collections---"
    result = server.run({"message":"ListCollections",
                         "collection":"/db"})
    print result
    print "---add document---"
    document = open("book.xml", "r")
    args = {"message":"InsertDocument",
            "collection":"/db/trial",
            "document":document.read(),
            "name":""}
    result = server.run(args)
    print result
    document.close()
    print "---query---"
    args = {"message":"Query",
            "collection":"/db/trial",
            "type":"XPath",
            "query":"//author"}
    result = server.run(args)
    print result
    print "---end tests---"

if __name__ == '__main__':
    main()
------------------------------------
This is the output:
$ ./pyTestXindice.py
---start tests---
---list collections---
{'result': ['trial', 'system', 'meta', 'test']}
---add document---
{'result': '5c4e9a7e63746b7400000100de333eb7'}
---query---
{'result': '<?xml version="1.0"?>\n<result count="4"><author 
xmlns:src="http://xml.apache.org/xindice/Query" src:col="/db/trial" 
src:key="test123">JRR Tolkien</author><author 
xmlns:src="http://xml.apache.org/xindice/Query" src:col="/db/trial" 
src:key="test123">JK Rowling</author><author 
xmlns:src="http://xml.apache.org/xindice/Query" src:col="/db/trial" 
src:key="test124">Charles Dickens</author><author 
xmlns:src="http://xml.apache.org/xindice/Query" src:col="/db/trial" 
src:key="test124">Jane Austen</author></result>'}
---end tests---

On Mon, 13 Dec 2004, Suzanne Little wrote:

> Hi,
> 
> I'm trying to use the xmlrpc interface to interact with xindice but the 
> only response I get is 
> "xmlrpclib.ProtocolError: <ProtocolError for localhost:8080/xindice: 302 
> Moved Temporarily>" when using python
> or
> "XML-RPC Fault #5: Didn't receive 200 OK from remote server. (HTTP/1.1 302 
> Moved Temporarily)" when using php.
> 
> Configuration details are:
> Redhat linux kernel 2.4.18-27.8.0
> java jdk1.3.1_07
> tomcat 5.0.19
> xindice - tried both the 1.1b4 release and cvs source 1.1b5-dev
> 
> For xmlrpc access I tried both python 2.2.1 with the standard xmlrpclib
> (which I want to use) and php 4.3.4 with phpxmlrpc library (just in case
> it was python specific).
> 
> Example session:
> >>> import xmlrpclib
> >>> server = xmlrpclib.Server("http://localhost:8080/xindice")
> >>> server.execute("db.GetDocumentCount", ('/db/testing'))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File "/usr/lib/python2.2/xmlrpclib.py", line 821, in __call__
>     return self.__send(self.__name, args)
>   File "/usr/lib/python2.2/xmlrpclib.py", line 975, in __request
>     verbose=self.__verbose
>   File "/usr/lib/python2.2/xmlrpclib.py", line 848, in request
>     headers
> xmlrpclib.ProtocolError: <ProtocolError for localhost:8080/xindice: 302 Moved Temporarily>
> 
> I can access the xindice installation via the browser 
> (http://localhost:8080/xindice) and via the commandline tools (xindice ac 
> -c xmldb:xindice://localhost:8080/db -n testing).
> 
> Any suggestions? 
> 
> Thanks,
> Suzanne
>