2017-05-14 22 views
0

私のWebページからjsonを取得するためにrequests.getを使用しましたが、コードを実行するとエラーが発生しました。 これは私のコードです:Requests.get()からjsonを取得するときにエラーが発生する

def get(t): 
while 1: 
    r = requests.get('http://raspberry.site11.com/controller.php') 
    while r.status_code != 200: 
     r = requests.get('http://raspberry.site11.com/controller.php')  
    d=r.json() 
    dv1=d["Dv1"] 
    dv2=d["Dv2"] 
    dv3=d["Dv3"] 
    dv4=d["Dv4"]  

    if dv1=="1": 
     GPIO.output(6,0) 
    else: 
     GPIO.output(6,1)   
    if dv2=="1": 
     GPIO.output(13,0) 
    else: 
     GPIO.output(13,1)   
    if dv3=="1": 
     GPIO.output(19,0) 
    else: 
     GPIO.output(19,1)  
    if dv4=="1": 
     GPIO.output(26,0) 
    else: 
     GPIO.output(26,1) 
    time.sleep(t) 

そして、これは私がrecivedたエラーです。

Unhandled exception in thread started by <function get at 0xb6506930> 
Traceback (most recent call last): 
    File "thread.py", line 33, in get 
    d=r.json() 
    File "/usr/lib/python2.7/dist-packages/requests/models.py", line 793, in json 
    return json.loads(self.text, **kwargs) 
    File "/usr/lib/python2.7/json/__init__.py", line 338, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib/python2.7/json/decoder.py", line 369, in decode 
    raise ValueError(errmsg("Extra data", s, end, len(s))) 
ValueError: Extra data: line 1 column 4 - line 1 column 10 (char 3 - 9) 

は、誰もが私を助けるかもしれない、おかげですべてそんなに。

+1

あなたのエンドポイントは、JSONを返していません。しかし、それが何を返すのか見なくても、私たちはもう助けることができません。 –

+0

私のために働いているようですか?おそらく、それはあなたがwhileループで呼び出しているという事実と関係があり、最終的にはあなたのサーバーに負荷がかかりますか?多分あなたはエラーを捕らえ、 'r.content'を記録するべきです。また、エラーが発生したときにサーバーログをチェックしてみてください。最後のコメントは、あなたのウェブページが間違ったcontent-type: 'text/html'を使用していることです。それは 'application/json'であるべきです –

+0

ありがとうございました。私の問題はインターネット接続の品質によって作られたので、別のホストに変更しました。 ^^ –

答えて

0

私はあなたが次に

def get(t): 
    while 1: 
     r = requests.get('http://raspberry.site11.com/controller.php') 
     while not get_json(r): 
      r = requests.get('http://raspberry.site11.com/controller.php')  
     d = get_json(r) 

def get_json(data): 
    try: 
     return data.json() 
    except ValueError: 
     return False 

を行うことができると思い

+0

ありがとうございました。私の問題はインターネット接続の品質によって作られたので、別のホストに変更しました。 ^^ –

関連する問題