This turns out to be largely due to the current ZSI (version 2.0rc3) using "Content-length" as the header field name, whereas the adwords python library's common.zsi.HttpsConnectionHandler wrapper code (wrapps httplib for ZSI) presumes that it will use "Content-Length" (which I assume that it did in an older version of ZSI, so this code will have worked for others).
This assumption occurs in both the send and the putheader method. The code works when I patch putheader to: 1. Check header.lower() against 'content-length' to decide to skip it. (I also just call the super class method rather than re-implementing the header formatting.) and patch send to: 2. Check for a state(*) of _CS_REQ_SENT as a sign that we are recursing from the call to httplib.HTTPSConnection.endheaders() further down in the function, rather than try to recognize that the text looks like a header. 3. To call the superclass putheader to add its own content-length header (since the new implementation in the sub-class, as detailed above would just discard it now, no matter the capitolization variations), passing str() of the length of the compressed data, since the super class doesn't do well with integers. I can supply my patched and commented code if someone, or a library maintainer, needs it. Bill (*) Note that attributes beginning with, but not ending with, double underscore get "name mangled" by having an underscore and the class name prefixed to them. Thus to access the __state attribute one really needs to use: self._HTTPConnection__state in methods of the subclass, since self.__state there gets mangled to self.HttpsConnectionHandler__state Note that this does not bode well for the use of self.__state in the getresponse() method accomplishing what you think it does. Double underscore attributes are much more strongly private than single underscore attributes. The implication is really that these are private even from subclasses. Thus it might be better, in send, to add a "__we_are_gzipping" attribute before the call to endheaders, and use hasattr to check for it in the "lets not gzip again" test. -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en