2017-05-16 13 views
0

JSONペイロードで複数のPOSTリクエストを同時に送信し、JSON結果を取得しようとしています。私はSOの他のいくつかの記事を読んだが、何もそのトリックをやっていない。複数のJSONペイロードを含むGrequest

def transcribe(vid_segs): 
    payloads = [] 
    for vid in vid_segs: 
     vid = base64.b64encode(open(vid).read()) 
     payload = { 
     "config": { 
      "encoding": "LINEAR16", 
      "sampleRateHertz": 16000, 
      "languageCode": "en-US", 
      "speechContexts": { 
       "phrases:": ["Barack", "Obama", "Barack Obama"] 
      } 
     }, 
     "audio": { 
      "content": vid 
     } 
    } 
    payloads.append(payload) 

    url = "https://speech.googleapis.com/v1/speech:recognize?key=MYAPIKEY" 
    unsent_request = [] 
    for payload_single in payloads: 
     unsent_request.append(grequests.get(url, 
             params=payload_single)) 
    responses = grequests.map(unsent_request) 
    for response in responses: 
     print response.json() 
     response.close() 

私はresponse.json()を使用している場合、それはエラーを返します:

JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

私はresponse.jsonにしようとした場合、どのような返されることがちょうどオブジェクトの詳細、実際のJSONコンテンツではありません応答コード:

<bound method Response.json of <Response [404]>> 

アイデアはありますか?前もって感謝します!

+0

まず最初は多分URLが...、間違った不正な形式または不完全である、つまり404ですか?ペイロードは1つだけ送信されますか?応答がJSONではない(おそらく404のように見える)JSONDecodeErrorを取得したのを見て、デバッグして/何らかの方法で 'response'オブジェクトを参照してください(print、dir、..または単にデバッガ:pdbまたはIDEが提供できるもの) –

答えて

0

response.jsonはメソッドなので、response.json()と呼ぶ必要があります。 JSONDecodeErrorは応答が有効なJSONではないことを伝えています。 response.text(テキストとしての応答)またはresponse.content(バイナリ応答)を印刷して、実際の応答が何であるかを確認してください。

@Lohmar ASHARがコメントで指摘したように、あなたは404を手に入れているので、おそらくあなたはJSONを取り返そうとしていないのは驚くことではないでしょう。応答に

より:私の注意を取得しhttp://docs.python-requests.org/en/master/user/quickstart/#response-content

+0

Brianと@Lohmarに感謝します。あなたは404コードについて正しいです - 実際にはAPIからの応答を得ていません。だから私は質問が本当に私が一般的な要求について行く方法に関するべきだと思います。私はすべてがURLとパラメータでうまくいくことを確認しました。一度に試してみるとうまくいきます。 – Steven

関連する問題