GMAIL API 历史端点仅在 Android 上返回 404 not found 响应代码

Posted

技术标签:

【中文标题】GMAIL API 历史端点仅在 Android 上返回 404 not found 响应代码【英文标题】:GMAIL API history endpoint returns a 404 not found response code only on Android 【发布时间】:2020-07-15 03:14:35 【问题描述】:

我正在尝试使用 historyId 对历史端点进行 GMAIL API 调用。这个调用适用于 Postman,我应该收到一个 json 响应。但是当我尝试在 android Studio 中实现相同的功能时,它会返回 404 Not Found 错误。谁能帮我解决这个问题?

URL urlHist = new URL("https://www.googleapis.com/gmail/v1/users/me/history?startHistoryId="+historyId);
            HttpURLConnection connHist = (HttpURLConnection) urlHist.openConnection();
            connHist.setRequestProperty("Authorization",token);
            connHist.setRequestMethod("GET");
            connHist.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            connHist.setRequestProperty("Accept","application/json");
            connHist.setDoOutput(true);
            connHist.setDoInput(true);

            DataOutputStream os = new DataOutputStream(connHist.getOutputStream());
            os.flush();
            os.close();

【问题讨论】:

【参考方案1】:

您应该使用 Gmail API 来构建您的请求。 Here 您可以找到有关如何开始使用 Java 的示例。你的请求应该翻译成这样:

private static final String APPLICATION_NAME = "Your Android APP name";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

//...

final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Gmail service = new Gmail.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();

ListHistoryResponse history = service.users().history().list("me").setStartHistoryId(historyId).execute();

【讨论】:

以上是关于GMAIL API 历史端点仅在 Android 上返回 404 not found 响应代码的主要内容,如果未能解决你的问题,请参考以下文章

Gmail API 历史请求返回草稿

使用先前存储在数据库中的凭据执行发送电子邮件的 API 端点。 (使用 Gmail REST API)

通过 API 获取 Android 订阅的用户历史交易记录

如何在客户端中使用 Firebase Auth gmail 保护 NestJS 中的 API?

如何从 google gmail js api 获取小于 10 MB 的消息?

Gmail 历史记录列表未提供完整数据