gpt4 book ai didi

Python 请求 post 不发送字符串

转载 作者:可可西里 更新时间:2023-11-01 17:02:13 29 4
gpt4 key购买 nike

所以我正在尝试使用 Python 将一个简单的内容发布到我的页面上。

r = requests.Session().post(
'http://mypage.com/add?token=%s&title=%s&opt=&opt=true&token=%s' % (token, title, token),
headers = headers,
proxies = proxy,
timeout = max_timeout,
)

问题是:如果 title 是,例如 Hello World! 它完美地工作,但是如果 titleHello World !访问 www.google.com它不起作用。

到目前为止我发现 title 字符串如果包含标点符号则不会发送,在这种情况下 www.google.com 有两个 . 所以它不会发布...

这在 Python 中正常吗?我也尝试过使用 urllib.quote urllib.urlencode 等等,但结果相同......

此外,如果你问我为什么不在 post()object 中使用 data = mydata 是因为,如果你注意到的话,我正在使用param tokenopt 两次,所以如果我像这样创建一个 data 对象:

data = {
"token": token,
"title": "title",
"opt": "",
"opt": 'value',
"token": token
}

显然它不会工作,因为它有重复的 key 值。

最佳答案

您正在 POST 空主体,并且仅使用查询参数。 requests 可以在请求参数和 POST 正文中发送重复键。您所要做的就是使用一系列键值元组而不是字典:

params = [
("token", token),
("title", "title"),
("opt", ""),
("opt", 'value'),
("token": token),
]

这些将在用作查询参数或用作 application/x-www-form-urlencoded POST 正文时为您编码。

要将这些作为 POST 正文发送,请使用 data 关键字参数:

requests.post('http://mypage.com/add', data=params,
headers = headers, proxies = proxy, timeout = max_timeout)

或使用 params 将这些作为查询参数发送(在 URL 中):

requests.post('http://mypage.com/add', params=params,
headers = headers, proxies = proxy, timeout = max_timeout)

关于Python 请求 post 不发送字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104529/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com