1

マルチパートコンテンツをsdkv2経由でGoogleドライブにPOSTしようとしたときに、「ServiceUnavailable」という503エラーが発生しました。以下のように、空の応答コンテンツとヘッダーを取得しました。

{'content-length': '0', 'x-google-cache-control': 'remote-fetch', 'expires': 'Fri, 01 Jan 1990 00:00:00 GMT', 'server': 'HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)', 'via': 'HTTP/1.1 GWA', 'pragma': 'no-cache', 'cache-control': 'no-cache, no-store, must-revalidate', 'date': 'Tue, 03 Jul 2012 23:12:09 GMT', 'content-type': 'text/html; charset=UTF-8'}

これが私が投稿したものです:

POST /upload/drive/v2/files?uploadType=multipart

Authorization: Bearer <Access token>
Content-Length: <length>
Content-Type: multipart/related; boundary="<a base64 encoded guid>"

--<a base64 encoded guid>
Content-Type: application/json

{"title": "test.jpg", "mimeType":"image/jpeg", "parents":[]}
--<a base64 encoded guid>
Content-Type: image/jpeg
Content-Transfer-Encoding: base64

<base64 encoded binary data>
--<a base64 encoded guid>--

私は何か間違ったことをしましたか?POSTでメタデータを作成し、uploadType = mediaでPUTして更新することで問題なく回避できますが、2つのAPI呼び出しを行いたくありません。

何か案が?

4

2 に答える 2

1

おそらくそうではありません。503エラーは、サーバーが修復などのためにダウンしていることを示しています。最低限、503エラーで応答することはできますが、基本的にはダウンしています。詳細を知りたい場合は、これをお読みください。

http://www.checkupdown.com/status/E503.html
于 2012-07-03T23:48:53.807 に答える
1

こんにちはクリス: これが私がやっていることです...

url = 'https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart'

boundary = base64.b64encode(uuid.uuid4().bytes)
parts = []
parts.append('--' + boundary)
parts.append('Content-Type: application/json')
parts.append('')
parts.append(json.dumps({
    'title': name,
    'mimeType': 'image/jpeg',
    'parents': [{
        'kind': 'drive#file',
        'id': folderId
        }] if folderId else []
    }))
parts.append('--' + boundary)
parts.append('Content-Type: image/jpeg')
parts.append('Content-Transfer-Encoding: base64')
parts.append('')
parts.append(base64.b64encode(content))
parts.append('--' + boundary + '--')
parts.append('')
body = '\r\n'.join(parts)

headers = {
    'Content-Type': 'multipart/related; boundary="%s"' % boundary,
    'Content-Length': str(len(body)),
    'Authorization': 'Bearer %s' % access_token
    }
response = urlfetch.fetch(url, payload=body, method='POST', headers=headers)
assert response.status_code == 200, '%s - %s' % (response.status_code, response.content)
r = json.loads(response.content)
于 2012-07-12T01:32:43.843 に答える