2014-11-03 52 views
0

用戶授權「讀取」權限後,我需要獲取用戶的所有電子郵件。我有access_token/refresh_token,它可以幫助我爲每封電子郵件打個別電話。我想對所有message_ids進行批量請求,以減少涉及的時間。這裏是我的代碼批量請求失敗。如何使用python httplib或urllib2做Google API批量請求?

import httplib,urllib 

def fetch_batch(): 
    headers = {'Authorization' : 'Bearer ya29.swCasdjkfgsdalkfgsadfgasdjhgasdkjfasgdfaksdf', 'Host' : 'www.googleapis.com', 'Content-Type' : 'multipart/mixed; boundary=demoabc_wp'} 

    body="""demoabc_wp 
    Content-Type: application/http 

    GET /gmail/v1/users/[email protected]/messages/1497474ajsd 

    demoabc_wp 
    Content-Type: application/http 

    GET /gmail/v1/users/[email protected]/messages/149744safdg 

    demoabc_wp 
    """ 
    h = httplib.HTTPConnection('www.googleapis.com') 
    h.request('POST', '/batch', body, headers) 
    print h.getresponse().read() 

這給出了這樣的迴應:提前

<HTML> 
<HEAD> 
    <TITLE>Bad Request</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
    <H1>Bad Request</H1> 
    <H2>Error 400</H2> 
</BODY> 
</HTML> 

感謝。 參考:https://developers.google.com/gmail/api/guides/batchBatch fetching messages performance

回答

1

你搞砸了多部分編碼。嘗試

import httplib,urllib 

def fetch_batch(): 
    headers = {'Authorization' : 'Bearer ya29.swCasdjkfgsdalkfgsadfgasdjhgasdkjfasgdfaksdf', 'Host' : 'www.googleapis.com', 'Content-Type' : 'multipart/mixed; boundary=demoabc_wp'} 

    body="""--demoabc_wp 
Content-Type: application/http 

GET /gmail/v1/users/[email protected]/messages/1497474ajsd 

--demoabc_wp 
Content-Type: application/http 

GET /gmail/v1/users/[email protected]/messages/149744safdg 

--demoabc_wp-- 
""" 
    h = httplib.HTTPSConnection('www.googleapis.com') 
    h.request('POST', '/batch', body, headers) 
    print h.getresponse().read() 

注意,這是在任何邊界開始2個連字符,並在最後2個額外的連字符,如果它是最後的邊界

+0

我認爲你應該嘗試使用代碼來提出請求。這是一個400錯誤。儘管我使用了你建議的確切語法,但仍然顯示了400錯誤。還有一些我錯過了我的想法。 – kawadhiya21 2014-11-04 19:23:13

+0

2問題,需要是https,以及身體中的東西在空間之前的空格。以上的作品,除了抱怨原因,這不是一個有效的授權。請注意,即使有這些修復,它仍然需要連字符 – 2014-11-05 04:41:09

相關問題