HttpMethod не аутентифицируется с WebDAV на Xamarin

Я использую Xamarin для разработки приложения. Приложение подключается к одному из наших серверов и аутентифицируется по протоколу NTLM. Все хорошо с подключением, за исключением очень специфического способа.

Я тестирую свой код как на консоли (PowerShell), так и на Android. Поэтому, когда я использую обычный протокол HTTP (GET, PUT и т. Д.), Все идет хорошо на обеих платформах. Но когда я пытаюсь использовать WebDAV (PROPFIND), я получаю ошибку http 401 (Аутентификация) ТОЛЬКО на Android. В консоли работает нормально. Вот код:

    public void UpdateCredentials()
    {
        credentials = new NetworkCredential(username, password, domain);
        credentialCache = new CredentialCache();
        credentialCache.Add(new Uri(site1), "NTLM", credentials);
        credentialCache.Add(new Uri(site2), "NTLM", credentials);
        connectionHandler = new HttpClientHandler()
        {
            Credentials = credentialCache,
            UseDefaultCredentials = false
        };
        connection = new HttpClient(connectionHandler);
        try
        {
            connection.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
        }
        catch { }
    }

public async Task<string> PropFindAsync(string _url, int _depth=0)
{
    string _content = "";

    connection.Timeout = new TimeSpan(0, 2, 20);
    var method = new HttpMethod("PROPFIND");
    var request = new HttpRequestMessage(method, _url);
    request.Headers.Add("Prefer", "return-minimal");
    request.Headers.Add("Depth", string.Format("{0}",_depth));
    request.Headers.Add("Translate", "f");

    var response = await connection.SendAsync(request);
    statusCode = response.StatusCode;
    _content = await response.Content.ReadAsStringAsync();
    return _content;
}

UpdateCredentials() Инициализирует класс, а PropFindAsync() возвращает мне содержимое. Библиотека в обоих проектах - System.Net.Http.

Кто-нибудь может мне помочь? Спасибо!

0 ответов

Другие вопросы по тегам