Quelqu'un peut-il aider à traduire le code suivant de 2.xx à 3.6? Je crois que les problèmes que j'ai proviennent du fait que la bibliothèque urllib2 a changé.Traduire à partir de Python 2.xx à 3.6
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
J'ai fait les modifications proposées au code par @tmadam et je suis maintenant obtenir l'erreur suivante:
retraçage (appel le plus récent en dernier): fichier « C:/Users/carte/PycharmProjects/Reverb/SSAPI.py ", ligne 37, dans response_body = urlopen (requête) .read() Fichier" C: \ Utilisateurs \ map \ AppData \ Local \ Programmes \ Python \ Python36-32 \ lib \ urllib \ request.py ", ligne 223, dans urlopen Renvoie opener.open (url, data, timeout) Fichier" C: \ Utilisateurs \ map \ AppData \ Local \ Programmes \ Python \ Python36-32 \ lib \ urllib \ request. py ", ligne 524, en ouvert req = meth (req) Fichier "C: \ Utilisateurs \ mappage \ AppData \ Local \ Programmes \ Python \ Python36-32 \ lib \ urllib \ request.py", ligne 1248, dans do_request_ raise TypeError (msg) TypeError: les données POST doivent être des octets, des itérables d'octets ou un objet fichier. Il ne peut pas être de type str.
Des idées sur pourquoi cela se passe-t-il?
Hey @tmadam J'ai fait ces modifications mais je reçois maintenant une erreur. J'ai modifié mon post précédent pour refléter cette erreur. Des idées? – bhess
Oui, les données POST doivent être des octets. Vous pouvez résoudre ce problème en encodant 'values', par exemple:' values = values.encode ("utf-8") ' –