gpt4 book ai didi

python - TypeError : can't concat bytes to str时如何转换为字节

转载 作者:行者123 更新时间:2023-12-01 02:28:57 25 4
gpt4 key购买 nike

我尝试通过 API 发送数据,但收到 TypeError: can't concat bytes to str。我理解这意味着我需要将部分代码转换为字节,但我不确定如何执行此操作。我尝试在前面添加 b 或使用 bytes('data') 但可能会将它们放在错误的区域。

import http.client

conn = http.client.HTTPSConnection("exampleurl.com")

payload = {
'FilterId': "63G8Tg4LWfWjW84Qy0usld5i0f",
'name': "Test",
'description': "Test1",
'deadline': "2017-12-31",
'exclusionRuleName': "Exclude",
'disable': "true",
'type': "Type1"
}

headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-csrf-token': "wWjeFkMcbopci1TK2cibZ2hczI",
'cache-control': "no-cache",
'postman-token': "23c09c76-3b030-eea1-e16ffd48e9"
}


conn.request("POST", "/api/campaign/create", payload, headers)


res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

这是问题行:

conn.request("POST", "/api/campaign/create", payload, headers)

我不确定什么以及如何转换为字节。

最佳答案

使用requests如果可以的话,合作起来会容易得多。

否则,您需要urlencode要发布到服务器的有效负载。负载的 url 编码版本如下所示:

description=Test1&exclusionRuleName=Exclude&FilterId=63G8Tg4LWfWjW84Qy0usld5i0f&deadline=2017-12-31&type=Type1&name=Test&disable=true

Here is a working example:

import http.client
from urllib.parse import urlencode

conn = http.client.HTTPSConnection("httpbin.org")

payload = {
'FilterId': "63G8Tg4LWfWjW84Qy0usld5i0f",
'name': "Test",
'description': "Test1",
'deadline': "2017-12-31",
'exclusionRuleName': "Exclude",
'disable': "true",
'type': "Type1"
}

headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'x-csrf-token': "wWjeFkMcbopci1TK2cibZ2hczI",
'cache-control': "no-cache",
'postman-token': "23c09c76-3b030-eea1-e16ffd48e9"
}

conn.request("POST", "/post", urlencode(payload), headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

http://httpbin.org返回此 JSON 响应:

{  "args": {},   "data": "",   "files": {},   "form": {    "FilterId": "63G8Tg4LWfWjW84Qy0usld5i0f",     "deadline": "2017-12-31",     "description": "Test1",     "disable": "true",     "exclusionRuleName": "Exclude",     "name": "Test",     "type": "Type1"  },   "headers": {    "Accept-Encoding": "identity",     "Cache-Control": "no-cache",     "Connection": "close",     "Content-Length": "133",     "Content-Type": "application/x-www-form-urlencoded",     "Host": "httpbin.org",     "Postman-Token": "23c09c76-3b030-eea1-e16ffd48e9",     "X-Csrf-Token": "wWjeFkMcbopci1TK2cibZ2hczI"  },   "json": null,   "origin": "220.233.14.203",   "url": "https://httpbin.org/post"}

请注意,我正在使用 httpbin.org作为测试服务器,发布到 https://httpbin.org/post .

此外,我已将 Content-type header 更改为 application/x-www-form-urlencoded,因为这是 urlencode() 返回的格式。

关于python - TypeError : can't concat bytes to str时如何转换为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47055600/

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