TypeError: los datos POST deben ser bytes, un iterable de bytes o un objeto de archivo. No puede ser de str

Typeerror Post Data Should Be Bytes

Ejemplo de código Python2:

|_+_|

Modifica el código a Python3

|_+_|

Sin embargo, se informará del siguiente error después de ejecutar:

|_+_|

Algunas de las respuestas mencionadas mencionaron que debe usar la función urllib.parse.urlencode () para convertir la solicitud a bytes, por lo que lo siguiente:



|_+_|

Pero esto no es válido para el formato de datos json y se produce un nuevo error:



|_+_|

Razón: json.dumps (data) simplemente convierte la matriz / diccionario en una cadena, la función urllib.parse.urlencode no es válida, cuando desea convertir la cadena pasada como parámetro de url (es decir, convierta el carácter de espacio a '% 20 '), utilizando urlencode, la salida de este método es una cadena, no una matriz de bytes.



La solucion correcta

json.dumps () devuelve una cadena, por lo que debe llamar a json.dumps (). encode () para convertirlo en una matriz de bytes.

|_+_|

Ejecute en este punto y el problema se resolverá.

|_+_|