<font style="font-family: Arial, Helvetica, sans-serif; font-size: 10pt"><font face="Tahoma, Arial, Sans-Serif" size="2"><strong></strong></font><font style="font-family: Arial,Helvetica,sans-serif; font-size: 10pt;">Using the current trunk r27366 (which is after #4014 fixed a related issue), I am having trouble with an implementation of web.guard wrapped XMLRPC.&nbsp; This is a new test implementation to expose both a soap and xmlrpc interface.&nbsp; SOAP works, but xmlrpc throws UnsupportedMethod POST.<br><br>Here is my test code, can anybody tell me if im doing something wrong?&nbsp; Again, /soap works, but /rpc2 freaks on the POST method being unavailable.<br><br>###### test-script.py<br><br>from zope.interface import implements<br>from twisted.internet import reactor<br>from twisted.web.resource import IResource, Resource<br>from twisted.web import server, guard<br>from twisted.cred.portal import IRealm<br>from twisted.python import log<br><br>from zope.interface import implements<br><br>from twisted.python import log<br>from twisted.internet import reactor<br>from twisted.web import server, resource, guard, xmlrpc, soap<br>from twisted.cred.portal import IRealm, Portal<br>from twisted.cred.checkers import InMemoryUsernamePasswordDatabaseDontUse<br><br>import sys<br><br>def getQuote():<br>&nbsp;&nbsp;&nbsp; return "Victory to the burgeois, you capitalist swine!"<br><br>class XMLRPCQuoter(xmlrpc.XMLRPC):<br>&nbsp;&nbsp;&nbsp; def xmlrpc_quote(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return getQuote()<br><br>class SOAPQuoter(soap.SOAPPublisher):<br>&nbsp;&nbsp;&nbsp; def soap_quote(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return getQuote()<br><br>class WebServicesRealm(object):<br>&nbsp;&nbsp;&nbsp; implements(IRealm)<br><br>&nbsp;&nbsp;&nbsp; def requestAvatar(self, avatarId, mind, *interfaces):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if resource.IResource in interfaces:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node = resource.Resource()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node.putChild("rpc2", XMLRPCQuoter())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node.putChild("soap", SOAPQuoter())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return resource.IResource, node, lambda: None<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise NotImplementedError()<br><br>if __name__ == "__main__":<br>&nbsp;&nbsp; log.startLogging(sys.stdout)<br><br>&nbsp;&nbsp; checker = [InMemoryUsernamePasswordDatabaseDontUse(foo='bar')]<br>&nbsp;&nbsp; webServicesWrapper = guard.HTTPAuthSessionWrapper(Portal(WebServicesRealm(), checker),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [guard.BasicCredentialFactory("test")])<br><br>&nbsp;&nbsp; reactor.listenTCP(9999, server.Site(webServicesWrapper))<br>&nbsp;&nbsp; reactor.run()<br><br>######<br><br>http://localhost:9999/soap *good*<br>http://localhost:9999/rpc2 *bad; POST isnt an allowed method*<br><br>Thanks,<br><br>TWKiel<br><br></font><br></font>