2016-12-30 17 views
0

私はPythonコーディングには新しく、APIとJSONについて最近学んだ。私は、乱数ジェネレータ(https://www.random.org/)と対話するための小さなテストコードを書きました。それはすごくうまくいっていますが、最近はJSONDecodeErrorをランダムかつ不定期に実行しています。それはときどき起こりますが、必ずしもそうではありません。コードを実行してエラーを取得し、何も変更しないで、10分後にコードを実行してエラーを表示しないようにすることができます。私はAPIがブラウザを介して実行されていることを確認するために二重チェックをしました。ここでは基本です:ランダムjson.decoder.JSONDecodeError:期待値:1行目(char 0)

書かれたと駆け抜ける:
PyCharmコミュニティ版2016年3月1日
ビルド#PC-163.9735.8、12月14日に建てられ、2016
JRE:1.8.0_112-リリース-408-をB6のx86
JVM:OpenJDKのサーバーVM JetBrainsのsro社によって

import requests 
import json 

print("Random Number Generator:") 
print("========================") 

# RANDOM NUMBER GEN 
response01 = requests.get(
"https://www.random.org/integers/?num=1&min=1&max=999999999&col=1&base=10&format=plain&rnd=new") 
data1 = response01.json() 

print(type(data1)) 
print(data1) 

このコードは、単にAPIから乱数を出力します。ここに私が得るランダムなエラーがあります:

Random Number Generator: 
======================== 
Traceback (most recent call last): 
    File "C:/REDACTED/REDACTED/REDACTED/REDACTED/API Practice 2.py", line 10, in <module> 
    data1 = response01.json() 
    File "C:\Program Files (x86)\Python35-32\lib\site-packages\requests\models.py", line 850, in json 
    return complexjson.loads(self.text, **kwargs) 
    File "C:\Program Files (x86)\Python35-32\lib\json\__init__.py", line 319, in loads 
    return _default_decoder.decode(s) 
    File "C:\Program Files (x86)\Python35-32\lib\json\decoder.py", line 339, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\Program Files (x86)\Python35-32\lib\json\decoder.py", line 357, in raw_decode 
    raise JSONDecodeError("Expecting value", s, err.value) from None 
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

Process finished with exit code 1 

私は持っている質問は2つの部分の並べ替えです。
A)このエラーの原因は何ですか?
B)それはなぜ(一見)ランダムに発生するのですか?

誰もが提供できる情報をありがとう。繰り返しますが、私はPythonのNOOBですので、私の無知や不足、教育をしてください。

注:REDACTEDは単なるプレースホルダです。

+0

同じリクエストを発行すると、サーバーから503の応答が得られます。例えば。 'response01.json() '行の前に' print response01.status_code'を入力してください。 – abigperson

+0

AH!それが私の新しいことです!私はそれを見落とした。私はちょうど私のコードが間違っていると仮定するようにまっすぐに行った。手伝ってくれてどうもありがとう! –

+0

私は助けてくれることを嬉しく思います! – abigperson

答えて

0

HTTPエラーが発生し、レスポンスオブジェクトにコンテンツがないため、解析できません。

import requests 
import json 

print("Random Number Generator:") 
print("========================") 

# RANDOM NUMBER GEN 
response01 = requests.get("https://www.random.org/integers/?num=1&min=1&max=999999999&col=1&base=10&format=plain&rnd=new") 
try : 
    data1 = json.loads(response01) 
    print('[i] Response : %s' % data1) 
except JSONDecodeError as e : 
    print('[!] Error while decoding response contents') 
    print('[!] %s - %s' % (response01.status_code, response01.text)) 
    # here you could replay the request 
関連する問題