java - Box API 更新电子邮件别名问题

标签 java apache-httpclient-4.x box-api

我正在尝试更新不同用户的电子邮件别名。我能够进行身份验证,获取代码,然后获取访问 token 。我将 HTTP POST 请求中的访问 token 作为 header 发送。我正在使用 Java 和 Apache HTTPClient 进行 RESTful 调用。这是代码片段(仅显示相关代码)。

if (httpClient != null) {

        String apiURL = getApiURL();
        apiURL = MessageFormat.format(apiURL, "firstname.lastname@company.com");
        // apiURL = https://api.box.com/2.0/users/firstname.lastname@company.com/email_aliases
        // firstname.lastname@company.com does exist in the Box Account

        HttpPost post = new HttpPost(apiURL);
        post.addHeader("Authorization", "Bearer "+accessToken);

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();            
        nameValuePairs.add(new BasicNameValuePair("email", "updateemail@company.com"));

        post.setEntity(new UrlEncodedFormEntity(nameValuePairs, Charset.defaultCharset()));

        HttpEntity entity = post.getEntity();

        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        String responseFromBox = httpClient.execute(post, responseHandler);
        writeResponse(response, responseFromBox);
        if (responseFromBox != null) {
            if (logger.isDebugEnabled()) {
                logger.debug("apiURL-->"+apiURL);
                logger.debug(responseFromBox);
            }
        }
    }

问题是我得到的响应是一些 HTML 代码,上面写着“您正在查看的页面已过期。请返回并重试您的请求。”我期待一些 JSON 字符串。

我做错了什么?在 Post 请求中,我使用了用户 ID,而不是发送电子邮件地址。但我遇到了同样的错误。

事实上,当我尝试使用 HTTP GET 请求获取用户的电子邮件别名时,我收到错误“未找到”。该用户确实存在。我有一个管理控件。我可以看到他们。

谢谢 拉杰

最佳答案

首先尝试使用/users 获取企业中所有用户的数组。这对你有用吗?如果没有,您可以访问/users/me 吗?如果您无法获得前者,那么您的 API key 可能没有“管理企业”授权设置。您必须在应用程序管理中进行设置,在其中设置 OAuth2 回调 URL。

不知道为什么您会恢复 HTML。这种情况通常只发生在我们的服务器甚至无法解析的格式错误的请求上,就像您访问了错误的 URL 一样。

提醒一下,OAuth2 URL 与 API URL 不同。第一个是 https://www.box.com/api/oauth2/ ....第二个是https://api.box.com/2.0/ ...

至于设置电子邮件别名,这是完全可能的,只要您知道要为其设置别名的用户的 ID。文档是here

关于java - Box API 更新电子邮件别名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22457093/

相关文章:

java - 如何获取过滤器中包含的url

java - 如何使用 Apache HttpClient 发布非 JSON 请求?

php - 使用 v2 API 将文件上传到 BOX

ios - 如何从V2 Box iOS SDK获取文件扩展名和路径?

java - 创建一个与ArrayList具有类似功能的新类,添加值时出错?

java - 使用 Hibernate Criteria 查询 ManyToMany 关系

java - 如何只获取HTML页面的一部分?

ssl - httpcomponents的ssl连接导致socket关闭

java - 使用 JWT 的现有公钥在 Java 中创建签名

java - 使用 java swing 应用程序与远程数据库连接