AttributeError:“ str”对象没有属性“ items”

有限

在下面的代码中:

#!/usr/local/bin/python
import json

APPLICATION_NAME = 'cc9226315643df89-36bf02429075329d0ba36748360d050c'

HEADERS1 = json.dumps(dict(Destination = u"/api/af/latest/applications/%s/rulesets" % (APPLICATION_NAME)))
print "Headers1 is %s" % (HEADERS1)
HEADERS2 = {'Destination': '/api/af/latest/applications/%s/rulesets' % (APPLICATION_NAME)}
print "Headers2 is %s" % (HEADERS2)

我得到以下输出:

Headers1 is {"Destination": "/api/af/latest/applications/cc9226315643df89-36bf02429075329d0ba36748360d050c/rulesets"}
Headers2 is {'Destination': '/api/af/latest/applications/cc9226315643df89-36bf02429075329d0ba36748360d050c/rulesets'}

但是,当我尝试在使用request()的REST调用中使用HEADER1或HEADER2时,得到的结果却截然不同:

SERVER_URL = 'http://1.1.33.109:8087%s' % (APP_PATH)
REQ_DATA = None
print "Headers are: ", HEADERS
print "SERVER_URL is: ", SERVER_URL
print "Request Data is:", REQ_DATA
print ""

RESPONSE = requests.request(
    'MOVE', 
    SERVER_URL, 
    auth = ('admin', 'admin'), 
    verify = False, 
    data = REQ_DATA,
    headers = HEADERS1 )     #<-- If I use HEADER1 it breaks, if I use HEADER2 it works
print "Move Ruleset back to the Application RESULT: %s\n" % (RESPONSE)

使用HEADER1,我得到以下信息:

Traceback (most recent call last):
   File "./myrest.py", line 234, in <module>
     headers = HEADERS1 )
   File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 44, in request
     return session.request(method=method, url=url, **kwargs)
   File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 324, in request
     prep = req.prepare()
   File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/models.py", line 223, in prepare
     p.prepare_headers(self.headers)
   File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/models.py", line 340, in prepare_headers
     headers = dict((name.encode('ascii'), value) for name, value in headers.items())
AttributeError: 'str' object has no attribute 'items'

如果我使用HEADER2,它将执行干净:

将规则集移回应用程序结果:响应[200]

谁能解释这些区别是什么?

马丁·彼得斯(Martijn Pieters)

您正在传递一个字符串; headers不能永远是一个JSON编码字符串,它始终是一个Python字典。

print结果都是骗人的; JSON编码的对象看起来很像Python字典表示形式,但它们远非同一件事。

requestsAPI明确规定,headers必须是一个字典:

  • headers–(可选)与一起发送的HTTP标头字典Request

JSON数据是您要作为内容发送到另一台服务器的内容,而不是用于与Python API通信的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python AttributeError:“ str”对象没有属性“ items”

来自分类Dev

AttributeError:“布尔”对象没有属性“ items”

来自分类Dev

Flask-AttributeError:“模块”对象没有属性“ items”

来自分类Dev

urllib.request => AttributeError: 'set' 对象没有属性 'items'

来自分类Dev

如何修复从PubSub读取并写入BigQuery的数据流管道中的“ AttributeError:'str'对象没有属性'items'”

来自分类Dev

AttributeError:“ str”对象没有属性“ toLowerCase”

来自分类Dev

AttributeError:'str'对象没有属性'get'

来自分类Dev

AttributeError:'str'对象没有属性'sleep'

来自分类Dev

AttributeError:“ str”对象没有属性“ maketrans”

来自分类Dev

AttributeError:'str'对象没有属性(功能)

来自分类Dev

attributeError:'str'对象没有属性'dbname'

来自分类Dev

AttributeError:“ str”对象没有属性“ values”

来自分类Dev

AttributeError:'str'对象没有属性'description'

来自分类Dev

AttributeError:'str'对象没有属性'union'

来自分类Dev

AttributeError:“ str”对象没有属性“ float”

来自分类Dev

AttributeError'str'对象没有属性'path'

来自分类Dev

AttributeError:'str'对象没有属性

来自分类Dev

AttributeError:“ str”对象没有属性“ name”

来自分类Dev

AttributeError: 'str' 对象没有属性 'keys'

来自分类Dev

AttributeError: 'str' 对象没有属性 'loc'

来自分类Dev

AttributeError: 'str' 对象没有属性 'channel'

来自分类Dev

AttributeError: 'str' 对象没有属性 'mode'

来自分类Dev

AttributeError: 'str' 对象没有属性 'map'

来自分类Dev

AttributeError: 'str' 对象没有属性 'execute'

来自分类Dev

AttributeError: 'str' 对象没有属性 'client'

来自分类Dev

python'str'对象没有属性'items'

来自分类Dev

Python3.x: TypeError: 'StringVar' 对象不可迭代 & AttributeError: 'StringVar' 对象没有属性 'items'

来自分类Dev

Python 3.4:str:AttributeError:'str'对象没有属性'decode

来自分类Dev

Python 3.4:str:AttributeError:'str'对象没有属性'decode

Related 相关文章

  1. 1

    Python AttributeError:“ str”对象没有属性“ items”

  2. 2

    AttributeError:“布尔”对象没有属性“ items”

  3. 3

    Flask-AttributeError:“模块”对象没有属性“ items”

  4. 4

    urllib.request => AttributeError: 'set' 对象没有属性 'items'

  5. 5

    如何修复从PubSub读取并写入BigQuery的数据流管道中的“ AttributeError:'str'对象没有属性'items'”

  6. 6

    AttributeError:“ str”对象没有属性“ toLowerCase”

  7. 7

    AttributeError:'str'对象没有属性'get'

  8. 8

    AttributeError:'str'对象没有属性'sleep'

  9. 9

    AttributeError:“ str”对象没有属性“ maketrans”

  10. 10

    AttributeError:'str'对象没有属性(功能)

  11. 11

    attributeError:'str'对象没有属性'dbname'

  12. 12

    AttributeError:“ str”对象没有属性“ values”

  13. 13

    AttributeError:'str'对象没有属性'description'

  14. 14

    AttributeError:'str'对象没有属性'union'

  15. 15

    AttributeError:“ str”对象没有属性“ float”

  16. 16

    AttributeError'str'对象没有属性'path'

  17. 17

    AttributeError:'str'对象没有属性

  18. 18

    AttributeError:“ str”对象没有属性“ name”

  19. 19

    AttributeError: 'str' 对象没有属性 'keys'

  20. 20

    AttributeError: 'str' 对象没有属性 'loc'

  21. 21

    AttributeError: 'str' 对象没有属性 'channel'

  22. 22

    AttributeError: 'str' 对象没有属性 'mode'

  23. 23

    AttributeError: 'str' 对象没有属性 'map'

  24. 24

    AttributeError: 'str' 对象没有属性 'execute'

  25. 25

    AttributeError: 'str' 对象没有属性 'client'

  26. 26

    python'str'对象没有属性'items'

  27. 27

    Python3.x: TypeError: 'StringVar' 对象不可迭代 & AttributeError: 'StringVar' 对象没有属性 'items'

  28. 28

    Python 3.4:str:AttributeError:'str'对象没有属性'decode

  29. 29

    Python 3.4:str:AttributeError:'str'对象没有属性'decode

热门标签

归档