2

我正在尝试发出 POST 请求但收到此错误:

Traceback (most recent call last):
  File "demo.py", line 7, in <module>
    r = requests.post(url, data=payload, headers=headers)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 87, in post
    return request('post', url, data=data, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 266, in request
    prep = req.prepare()
  File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 215, in prepare
    p.prepare_body(self.data, self.files)
  File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 338, in prepare_body
    body = self._encode_params(data)
  File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 74, in _encode_params
    for k, vs in to_key_val_list(data):
ValueError: too many values to unpack

这是我的程序:

import requests

url = 'http://www.n-gal.com/index.php?route=openstock/openstock/optionStatus'

payload = {'var:1945,product_id:1126'}
headers = {'content-type': 'application/x-www-form-urlencoded'}
r = requests.post(url, data=payload, headers=headers)

我已经使用以下数据通过高级休息客户端尝试了相同的 POST 请求:

URL : http://www.n-gal.com/index.php?route=openstock/openstock/optionStatus payload : var=1945&product_id=1126 Content-Type: application/x-www-form-urlencoded

它工作正常,任何人都可以帮助我...

4

4 回答 4

6

你做了payload一个set,而不是字典。你忘了关闭字符串。

改变:

payload = {'var:1945,product_id:1126'}

至:

payload = {'var':'1945','product_id':'1126'}

由于它是一个集合,因此请求将因此失败。

于 2013-06-21T06:37:55.313 回答
5

尝试这个 :

import requests

url = 'http://www.n-gal.com/index.php?route=openstock/openstock/optionStatus'

payload = 'var=1945&product_id=1126'
headers = {'content-type': 'application/x-www-form-urlencoded'}
r = requests.post(url, data=payload, headers=headers)

print r.json()
于 2013-06-21T06:49:11.850 回答
0

我知道这是一个非常老的问题,但我最近在使用 Docker 时遇到了同样的问题,并设法通过requests在需求中包含库来解决它(或者只是用 更新库pip install requests --upgrade)。

当使用 requests 库的原始版本时,它在 Python3.8 上引发了同样的错误,只是在升级后才停止。

于 2020-04-01T16:27:36.977 回答
0
import requests
import json

url = 'http://www.n-gal.com/index.php?route=openstock/openstock/optionStatus'

payload = {'var:1945,product_id:1126'}
headers = {'content-type': 'application/x-www-form-urlencoded'}
r = requests.post(url, data=json.dumps(payload), headers=headers)
于 2019-09-05T19:20:42.290 回答