2

次のコードを使用して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/> 

私のURLは間違っていますか?ドキュメントに関してはそうではないようです。

認証に問題はありますか?エラー401(無許可)が発生しません。

何か案が?

ご協力いただきありがとうございます。

編集:

サーバー側でZimbraの制限はありますか?たとえば、Webブラウザまたはスマートフォンからのみアクセスできます。

4

2 に答える 2

1

REST サービスでは、HTTP メッセージはプロトコルの一部であり、404 は、サービスは問題ないが、ユーザーが見つからないことを意味する場合があります。別のユーザーで試しましたか? または、API にデフォルトのテスト ユーザーを設定することもできます。

于 2012-06-15T11:51:47.943 に答える
1

私はZimbraについての手がかりを持っていませんが、あなたのURL"http://"+HOST+":"+PORT+"/home/"+USER+"/contacts?fmt=csv"ではUSERvar schouldが実際のユーザー名に置き換えられるようbobです。しかし、404 応答で要求している URL は次のとおり/service/home/USER/contactsです。ユーザーからの連絡先を要求したいようですがUSER、この名前のユーザーはいません。そうですか?

于 2012-06-15T07:11:43.777 に答える