【问题标题】:Zimbra: Downloading contacts as a CSV file using HttpClientZimbra:使用 HttpClient 将联系人下载为 CSV 文件
【发布时间】:2012-06-13 06:50:49
【问题描述】:

我正在尝试使用以下代码从 Zimbra 下载联系人:

public static void getHTTPFile() {

    HttpClient client = new HttpClient();

    List<String> authPrefs = new ArrayList<String>(2);
    authPrefs.add(AuthPolicy.DIGEST);
    authPrefs.add(AuthPolicy.BASIC);
    client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);

    client.getState().setCredentials(
    new AuthScope(HOST, new Integer(PORT).intValue(), AuthScope.ANY_REALM),
    new UsernamePasswordCredentials(NAME, PASSWORD)
    );

    GetMethod get = new GetMethod("http://"+HOST+":"+PORT+"/home/"+USER+"/contacts?fmt=csv");
    get.setDoAuthentication(true);

    try {
        int status = client.executeMethod(get);

        System.out.println(status + "\n" + get.getResponseBodyAsString());
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        get.releaseConnection();
    }
}

但我收到错误 404(未找到):

13 juin 2012 08:40:47 org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: Basic authentication scheme selected
404
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 no such item</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /service/home/USER/contacts. Reason:
<pre>    no such item</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/> 

我的网址有误吗?关于documentation 似乎不是。

认证有问题吗?我没有收到错误 401(未经授权)。

有什么想法吗?

感谢您的帮助。

编辑:

Zimbra 在服务器端有限制吗?例如,我们只能通过网络浏览器或智能手机访问它。

【问题讨论】:

  • 你试过公共资源吗?

标签: java apache-commons-httpclient zimbra


【解决方案1】:

我对 Zimbra 一无所知,但似乎在您的 URL "http://"+HOST+":"+PORT+"/home/"+USER+"/contacts?fmt=csv" 中,USER var 应该替换为真实用户名,例如 bob。但在 404 响应中,您请求的 url 是:/service/home/USER/contacts。在我看来,您想向用户 USER 请求联系人,并且没有使用此名称的用户。对吗?

【讨论】:

  • 我自愿将我的用户名替换为USER,就像PORT 实际上是80。USER 看起来像:firstname.lastname@subdomain.domain。
  • 命令格式的文档(链接:wiki.zimbra.com/wiki/…)显示了该格式。它可以是您描述的形式,也可以是简短的firstname.lastname(但我认为这通常是用户名,如果用户名是 firstname.lastname 则可以)。当您将 USER 替换为您的 NAME var 时会发生什么?
  • NAMEUSER 是一样的。
  • 但正如您在回复中看到的那样:&lt;body&gt;&lt;h2&gt;HTTP ERROR 404&lt;/h2&gt; &lt;p&gt;Problem accessing /service/home/USER/contacts. USER 不会被您描述的任何值替换 (firstname.lastname@subdomain.domain)
  • 让我添加一个示例:http://94.104.96.103:80/home/bob.john@work.com/contacts?fmt=csv 并且 404 响应是 /service/home/bob.john@work.com/contacts
【解决方案2】:

在 REST 服务中,HTTP 消息是协议的一部分,404 可能意味着服务正常但找不到您的用户。您是否尝试过其他用户?或者也许你可以在 api 上有一个默认的测试用户。

【讨论】:

  • 我已经在我的 Web 浏览器中使用令牌尝试了另一个 URL,它运行良好。所以我不认为用户是问题。
  • 您的用户有合同吗?可能未找到意味着未找到合同。您是否检查了服务的接受 mime 类型?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多