I'm upgrading from python 2.5 to python 2.7 and then I'm starting to get this error:
InvalidResponseError: headers must be str I think it is because somewhere my HTTP headers are cast to unicode instead of string but I can't find where in the code? The example code I'm trying to upgrade to python 2.7 is https://github.com/supernifty/gae-paypal-online-market-example class Pay( object ): def __init__( self, amount, return_url, cancel_url, remote_address, secondary_receiver=None, ipn_url=None, shipping=False ): headers = { 'X-PAYPAL-SECURITY-USERID': str(settings.PAYPAL_USERID), 'X-PAYPAL-SECURITY-PASSWORD': str(settings.PAYPAL_PASSWORD), 'X-PAYPAL-SECURITY-SIGNATURE': str(settings.PAYPAL_SIGNATURE), 'X-PAYPAL-REQUEST-DATA-FORMAT': str('JSON'), 'X-PAYPAL-RESPONSE-DATA-FORMAT': str('JSON'), 'X-PAYPAL-APPLICATION-ID': str(settings.PAYPAL_APPLICATION_ID), 'X-PAYPAL-DEVICE-IPADDRESS': str(remote_address), } data = { 'currencyCode': 'USD', 'returnUrl': return_url, 'cancelUrl': cancel_url, 'requestEnvelope': { 'errorLanguage': 'en_US' }, } if shipping: data['actionType'] = 'CREATE' else: data['actionType'] = 'PAY' if secondary_receiver == None: # simple payment data['receiverList'] = { 'receiver': [ { 'email': settings.PAYPAL_EMAIL, 'amount': '%f' % amount } ] } else: # chained commission = amount * settings.PAYPAL_COMMISSION data['receiverList'] = { 'receiver': [ { 'email': settings.PAYPAL_EMAIL, 'amount': '%0.2f' % amount, 'primary': 'true' }, { 'email': secondary_receiver, 'amount': '%0.2f' % ( amount - commission ), 'primary': 'false' }, ] } if ipn_url != None: data['ipnNotificationUrl'] = str(ipn_url) self.raw_request = json.dumps(data) #request = urllib2.Request( "%s%s" % ( settings.PAYPAL_ENDPOINT, "Pay" ), data=self.raw_request, headers=headers ) #self.raw_response = urllib2.urlopen( request ).read() self.raw_response = url_request( "%s%s" % ( str(settings.PAYPAL_ENDPOINT), str("Pay") ), data=self.raw_request, headers=headers ).content() logging.info( "response was: %s" % self.raw_response ) self.response = json.loads( str(self.raw_response) ) -- http://mail.python.org/mailman/listinfo/python-list