有人可以帮助将以下代码从2.xx转换为3.6吗?我相信我所遇到的问题源于urllib2库已更改的事实。
from urllib2 import Request, urlopen
values = """
{
"carrierCode": "fedex",
"serviceCode": null,
"packageCode": null,
"fromPostalCode": "78703",
"toState": "DC",
"toCountry": "US",
"toPostalCode": "20500",
"toCity": "Washington",
"weight": {
"value": 3,
"units": "ounces"
},
"dimensions": {
"units": "inches",
"length": 7,
"width": 5,
"height": 6
},
"confirmation": "delivery",
"residential": false
}
"""
headers = {
'Content-Type': 'application/json',
'Authorization': '< Enter your Basic Authorization string here >'
}
request = Request('https://ssapi.shipstation.com/shipments/getrates',
data=values, headers=headers)
response_body = urlopen(request).read()
print response_body
我已经对@ t.m.adam的代码进行了建议编辑,现在收到以下错误:
追踪(最近一次通话): 文件“C:/Users/map/PycharmProjects/Reverb/SSAPI.py”,第37行, response_body = urlopen(request).read() 文件“C:\ Users \ map \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ urllib \ request.py”,第223行,在urlopen中 return opener.open(url,data,timeout) 文件“C:\ Users \ map \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ urllib \ request.py”,第524行,打开 req = meth(req) do_request_中的文件“C:\ Users \ map \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ urllib \ request.py”,第1248行 提出TypeError(msg) TypeError:POST数据应该是字节,可迭代的字节或文件对象。它不能是str类型。
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:0)
Request
和urlopen
是python 3中urllib.request
的一部分。
如果更改导入,仍可以使用脚本:
from urllib.request import Request, urlopen
同样打印是python 3中的一个函数。所以使用它:
print(response_body)