我是RESTful API以及處理MIME內容的新手。我正在嘗試編寫應用程序以從Gmail郵箱中檢索郵件以進行進一步處理。GMail RESTful API: - 內容傳輸編碼分歧
我使用Google Developers API參考作爲工具來熟悉API。以下Gmail API中使用「試用」功能參考
https://developers.google.com/gmail/api/v1/reference/users/messages/get
我檢索的只是有兩行簡單的文本測試消息。第一行包含簡單的ASCII,而第二行包含一些Unicode文本。
This the first line of body text in English only
This is second line, 中文睇到嗎 , could you see those Chinese
並且獲得
"parts": [
{
"partId": "0",
"mimeType": "text/plain",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/plain; charset=UTF-8"
},
{
"name": "Content-Transfer-Encoding",
"value": "quoted-printable"
}
],
"body": {
"size": 120,
"data": "VGhpcyB0aGUgZmlyc3QgbGluZSBvZiBib2R5IHRleHQgaW4gRW5nbGlzaCBvbmx5DQoNClRoaXMgaXMgc2Vjb25kIGxpbmUsIOS4reaWh-edh-WIsOWXjiAsIGNvdWxkIHlvdSBzZWUgdGhvc2UgQ2hpbmVzZQ0K"
}
},
{
"partId": "1",
"mimeType": "text/html",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/html; charset=UTF-8"
},
{
"name": "Content-Transfer-Encoding",
"value": "quoted-printable"
}
],
"body": {
"size": 354,
"data": "PGRpdiBkaXI9Imx0ciI-PGRpdiBjbGFzcz0iZ21haWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQtZmFtaWx5OnRhaG9tYSxzYW5zLXNlcmlmIj5UaGlzIHRoZSBmaXJzdCBsaW5lIG9mIGJvZHkgdGV4dCBpbiBFbmdsaXNoIG9ubHk8L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9kZWZhdWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6dGFob21hLHNhbnMtc2VyaWYiPjxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9kZWZhdWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6dGFob21hLHNhbnMtc2VyaWYiPlRoaXMgaXMgc2Vjb25kIGxpbmUsIOS4reaWh-edh-WIsOWXjiAsIGNvdWxkIHlvdSBzZWUgdGhvc2UgQ2hpbmVzZTwvZGl2PjwvZGl2Pg0K"
}
}
]
正如你可以看到以下的響應,而「內容傳輸編碼」被指定爲返回「引用可打印」的實際數據是在base64url編碼。
當我使用我的測試腳本通過GMail RESTful API檢索消息時,獲得相同的64baseurl編碼響應。
所以我的問題是爲什麼標題中的「content-transfer-encoding」與實際的編碼響應之間存在分歧?我忽略了一些東西,還是有一些額外的參數/請求使其正確?
感謝
編輯:基於從@EricDeFriez
的評論如果我base64url的 '數據' 字段
"VGhpcyB0aGUgZmlyc3QgbGluZSBvZiBib2R5IHRleHQgaW4gRW5nbGlzaCBvbmx5DQoNClRoaXMgaXMgc2Vjb25kIGxpbmUsIOS4reaWh-edh-WIsOWXjiAsIGNvdWxkIHlvdSBzZWUgdGhvc2UgQ2hpbmVzZQ0K"
解碼看來結果已經是原來的UTF8編碼的文本:
This the first line of body text in English only
This is second line, 中文睇到嗎 , could you see those Chinese
如果是「引用打印」編碼,則結果爲o ˚Fbase64url解碼應該是這樣的:
This the first line of body text in English only
This is second line, =E4=B8=AD=E6=96=87=E7=9D=87=E5=88=B0=E5=97=8E , could =
you see those Chinese
看來,在JSON響應的「引用可打印」 CTE頭是不正確的。無論在CTE頭中指定什麼,數據字段始終是base64url編碼。
你知道原因嗎?
埃裏克感謝您的回覆。我發現一些進一步的問題。請參閱我上面的編輯。謝謝 – gatek