Kann jemand bitte helfen, den folgenden Code von 2.xx nach 3.6 zu übersetzen? Ich glaube, dass die Probleme, die ich habe, von der Tatsache herrühren, dass sich die urllib2-Bibliothek geändert hat.Von Python 2.xx auf 3.6 übersetzen
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
Ich habe die vorgeschlagenen Änderungen an dem Code von @tmadam gemacht und jetzt bin immer folgende Fehlermeldung:
Traceback (jüngste Aufforderung zuletzt): Datei „C:/Users/map/PycharmProjects/Reverb/SSAPI.py ", Zeile 37, in response_body = urlopen (request) .read() Datei" C: \ Benutzer \ map \ AppData \ Lokale \ Programme \ Python \ Python36-32 \ lib \ urllib \ request.py ", Zeile 223, in urlopen return opener.open (URL, Daten, Timeout) Datei" C: \ Benutzer \ map \ AppData \ Lokale \ Programme \ Python \ Python36-32 \ lib \ urllib \ request. py ", Zeile 524, in geöffnet req = meth (req) Datei "C: \ Benutzer \ map \ AppData \ Lokale \ Programme \ Python \ Python36-32 \ lib \ urllib \ request.py", Zeile 1248, in do_request_ Erheben TypeError (msg) TypeError: POST-Daten sollten Bytes, ein iterierbares Byte oder ein Dateiobjekt sein. Es kann nicht vom Typ str sein.
Irgendwelche Ideen, warum das passiert?
Hey @tmadam Ich habe diese Änderungen gemacht, aber jetzt bekomme ich einen Fehler. Ich habe meinen vorherigen Beitrag bearbeitet, um diesen Fehler zu reflektieren. Irgendwelche Ideen? – bhess
Ja, POST-Daten sollten Bytes sein. Sie können dieses Problem lösen, wenn Sie 'Werte' kodieren, zB:' Werte = Werte.encode ("utf-8") ' –