2017-09-29 1 views
3

Immer wenn ich den folgenden Code in Python 3 ausführen, erhalte ich einen Syntaxfehler invalid syntax. Der Grund dafür liegt darin, dass print in Python 3 eine andere Syntax hat.Urllib Fehler bei der Verwendung von Python 3

TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.

+0

Python 3-Print ist eine Funktion, also verwenden Sie es als 'print()'. Versuchen Sie, Ihre Zeichenkette mit 'ba = urlopen (request) .read(). 'Encode (' latin1 ')' – Vinny

+0

@Vinny immer noch den gleichen Fehler in 'bytearray' zu konvertieren – tony9099

Antwort

2

Konvertieren Sie Ihre Daten auf Byte-String request Objekt vor dem Erstellen:

result = urlopen(request).read() 

ich folgende Fehlermeldung erhalten

import sys 
from urllib.request import urlopen 
from urllib.request import Request 
import json 

request = Request(
    "https://gcm-http.googleapis.com/gcm/send", 
    dataAsJSON, 
    { "Authorization" : "key="+MY_API_KEY, 
     "Content-type" : "application/json" 
    } 
) 

print urlopen(request).read() 

jedoch, wenn ich meine letzte Zeile ändern.

dataAsJSON = dataAsJSON.encode() 
Verwandte Themen