TypeError: 使用Python的REQUESTS模块时,'set'对象不可索引

0 投票
1 回答
7774 浏览
提问于 2025-04-17 19:56

我刚接触Python,也刚开始使用'requests'模块,还有StackOverflow,所以请多多包涵。 :)

如果有人能给我一些关于我的代码的提示,我将非常感激。

代码:

import requests

url = 'https://somewebsite.com/svc/api/json/loginUser'


headers = {'User-Agent':'Python _dopost() method',
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Charset':'Shift_JIS,utf-8;q=0.7,*;q=0.7',
    'Accept-Encoding':'gzip,deflate',
    'Content-Type':'/plain; charset=UTF-8'}

data = {'<soapenv:Envelope><soapenv:Body><loginUser><email>tacoflavoredkisses@yum.com</email><password>password</password><setcookie>1</setcookie><remember>1</remember></loginUser></soapenv:Body></soapenv:Envelope>'}

r = requests.post(url, data=data, headers=headers)

错误信息:TypeError: 'set'对象不可下标访问

这是一个很长的Python错误信息,这里有一小段,希望能提供足够的信息。

TypeError                                 Traceback (most recent call last)
/Library/Python/2.7/site-packages/ipython-0.13.1-py2.7.egg/IPython/utils/py3compat.pyc in execfile(fname, *where)
176             else:
177                 filename = fname
--> 178             __builtin__.execfile(filename, *where)

 21 
 22 payload = {'<soapenv:Envelope><soapenv:Body><loginUser><email>tacoflavoredkisses@yum.com</email><password>password</password><setcookie>1</setcookie><remember>1</remember></loginUser></soapenv:Body></soapenv:Envelope>'}
---> 23 r = requests.post(url, data=data, headers=headers)
 24 
 25 print r.status_code

/Library/Python/2.7/site-packages/requests-1.1.0-py2.7.egg/requests/api.pyc in post(url, data, **kwargs)
 85     """
 86 
---> 87     return request('post', url, data=data, **kwargs)
/Library/Python/2.7/site-packages/requests-1.1.0-py2.7.egg/requests/api.pyc in request(method, url, **kwargs)
 42 
 43     session = sessions.Session()
---> 44     return session.request(method=method, url=url, **kwargs)
/Library/Python/2.7/site-packages/requests-1.1.0-py2.7.egg/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert)
277 
278         # Send the request.
--> 279         resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
/Library/Python/2.7/site-packages/requests-1.1.0-py2.7.egg/requests/sessions.pyc in send(self, request, **kwargs)
372         """Send a given PreparedRequest."""
373         adapter = self.get_adapter(url=request.url)
--> 374         r = adapter.send(request, **kwargs)

1 个回答

2

把数据改成字符串格式解决了我的问题。

撰写回答