2017-09-29 21 views
3

Python 3で以下のコードを実行すると、構文エラーinvalid syntaxが発生します。この理由は、python 3のprintが異なる構文を持っているからです。私はPython 3を使用するとurllibエラーが発生する

result = urlopen(request).read() 

に私の最後の行を変更したときに

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() 

は、しかし、私は次のエラーを取得する:

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

+0

Python 3 printは関数であり、 'print()'として使用します。 'ba = urlopen(request).read()。encode( 'latin1')' – Vinny

+0

を使って文字列を 'bytearray'に変換してみてください@Vinnyはまだ同じエラーです – tony9099

答えて

2

requestオブジェクトを作成する前に、バイト列にデータを変換します。

dataAsJSON = dataAsJSON.encode() 
関連する問題