Dipanwita Das
Dipanwita Das

Reputation: 379

Why do I get error AttributeError: 'Response' object has no attribute 'get' in Python2.7?

I am getting error AttributeError: 'Response' object has no attribute 'get' for the below code I have written

def convert_json(self,bucket,userid,imgfilename,field,i):

    bucketName = bucket
    link = "users_"+str(userid)+'/'+imgfilename
    c = S3Connection(self.AWS_ACCESS_KEY_ID,self.AWS_ACCESS_KEY_SECRET)
    p = c.generate_url(expires_in=long(7200),method='GET',bucket=bucketName,key=link,query_auth=True,force_http=False)  
    post_url = "http://someurl"
    wrapper = {"filename":p}
    try:
        response = requests.post(post_url, json=wrapper)
        print response
        if response.status_code == 200:
            text = response.get('description', [])
        else:
            text = []
    except Exception:
        if response.status_code == 200:
            text = response.get('description', [])
        else:
            text = []
    return text

Upvotes: 18

Views: 102495

Answers (2)

Kishor Pawar
Kishor Pawar

Reputation: 3526

Assuming you are using Requests library, the Response object does not have a get method.

The link given explains the attributes and methods of Response object.

If you want to read response, actual data you should be looking into either content, json or text.

Upvotes: 7

Preston
Preston

Reputation: 8187

The object isn't a dictionary, so you can't use get. You'll likely find what you need with either:

  • r.status_code
  • r.content
  • r.text
  • r.json()

To cite the example given on the requests page:

>>> import requests
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'disk_usage': 368627, u'private_gists': 484, ...}

Upvotes: 22

Related Questions