簡體   English   中英

AttributeError: 'dict' 對象沒有屬性 'encode'

[英]AttributeError: 'dict' object has no attribute 'encode'

我正在嘗試使用多部分表單數據向目標網站發布請求

m = MultipartEncoder(
    fields={"auth":{"id":str(random.randint(0, 999991)),"sign":randoms(32)},
    "data":{"action":"login","login":"embrella","password":"steffano321","stayLogged":"False"}
    })
s = requests.Session()
s.post('targetwebsite', data=m, headers=headers['Content-Type': m.content_type], timeout=5)

但我總是以

line 25, in <module>
    "data":{"action":"login","login":"embrella","password":"steffano321","stayLogged":"False"}
AttributeError: 'dict' object has no attribute 'encode'

我不知道是什么原因造成的,我什至嘗試先轉換為 JSON 然后發布

uuhh = {'auth':{"id":str(random.randint(0, 999991)),"sign":randoms(32)},
    "data":{"action":"login","login":"embrella","password":"steffano321","stayLogged":"False"}}
    fields = json.dumps(uuhh)
m = MultipartEncoder(fields=fields)

但它說ValueError: not enough values to unpack (expected 2, got 1)所以我想這是非常錯誤的。

似乎您將authdata作為字典傳遞,但它們應該是字符串。 改變

    m = MultipartEncoder(
    fields={"auth":{"id":str(random.randint(0, 999991)),"sign":randoms(32)},
    "data":{"action":"login","login":"embrella","password":"steffano321","stayLogged":"False"}
    })

    m = MultipartEncoder(
    fields={"auth":'{{"id":{},"sign":{}}}'.format(random.randint(0, 999991), randoms(32)),
    "data":'{{"action":"login","login":"embrella","password":"steffano321","stayLogged":"False"}}'
    })

解決您的問題。

MultipartEncoder嘗試對字段的值運行.encode(...)方法。
由於您正在傳遞字典,因此無法編碼並且錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM