0

我一直在尝试修改 suds.transport 的回复类。

我尝试了以下方法:

import suds.transport
old_reply = suds.transport.Reply

class Reply2:
    """
    A transport reply
    @ivar code: The http code returned.
    @type code: int
    @ivar message: The message to be sent in a POST request.
    @type message: str
    @ivar headers: The http headers to be used for the request.
    @type headers: dict
    """

    def __init__(self, code, headers, message):
        """
        @param code: The http code returned.
        @type code: int
        @param headers: The http returned headers.
        @type headers: dict
        @param message: The (optional) reply message received.
        @type message: str
        """
        print 'hello, i patched the class'
        self.code = code
        self.headers = headers
        self.message = message

    def __str__(self):
        s = []
        s.append('CODE: %s' % self.code)
        s.append('HEADERS: %s' % self.headers)
        s.append('MESSAGE:')
        s.append(self.message)
        return '\n'.join(s)

suds.transport.Reply = Reply2

执行client请求时(就像您通常使用 Suds 一样),使用默认回复而不是修补的回复。

这种方法失败的原因可能是什么?

注意:似乎__init__单独修补确实会产生更好的结果。但我需要修改课堂上的更多行为。最后,我试图覆盖回复以获取传入的附件,就像在 SO和解决方案上问的一样

4

1 回答 1

1

该模块使用以下行suds.transport.http导入:Reply

from suds.transport import *

并在您修补它之前执行此操作。您还需要更新该参考:

import suds.transport.http
suds.transport.http.Reply = Reply2
于 2013-06-19T07:21:12.817 回答