Как отправить пользовательские заголовки http_headers для вызовов RPC, используя python xmlrpclib? - PullRequest
2 голосов
/ 07 января 2011

Как я могу отправить пользовательскую HTTP Headers используя библиотеку python xmlrpclib!?Мне нужно отправить некоторые специальные пользовательские http_headers во время вызова RPC методов.

1 Ответ

11 голосов
/ 17 января 2011

Вы можете создать подкласс xmlrpclib.Transport и передать его в качестве аргумента ServerProxy. Выберите метод для переопределения (я выбрал send_content), и все готово.

# simple test program (from the XML-RPC specification)
from xmlrpclib import ServerProxy, Transport, Error

class SpecialTransport(Transport):

    def send_content(self, connection, request_body):

        print "Add your headers here!"

        connection.putheader("Content-Type", "text/xml")
        connection.putheader("Content-Length", str(len(request_body)))
        connection.endheaders()
        if request_body:
            connection.send(request_body)


# server = ServerProxy("http://localhost:8000") # local server
server = ServerProxy("http://betty.userland.com", transport=SpecialTransport())

print server

try:
    print server.examples.getStateName(41)
except Error, v:
    print "ERROR", v
...