2016-09-02 3 views
1

Мне нужно проверить, существует ли URL-адрес и может быть достигнут. Для этого отправьте запрос «Получить» и обработайте статус:Проверьте URL-адрес с NTLM на стороне сервера

var httpClient = new HttpClient(); 
var response = httpClient.GetAsync(new Uri(pageUrl)); 
isPageAccessible = response.Result.StatusCode == HttpStatusCode.OK; 

Однако для аутентификации сервер использует NTLM. Когда я нашел это here, есть несколько шагов (запросов), прежде чем я получу статус ОК. Для первого запроса я получаю 401 Несанкционированный статус и не могу перейти к дальнейшим шагам.

В целом, как я могу проверить URL-адрес на сервере с помощью NTML после завершения всех запросов?

+0

это должно работать - http://stackoverflow.com/a/36842188/5665484. И для проверки того, является ли url доступным, я бы предложил сделать запрос HEAD вместо GET – Developer

ответ

0

Если вы получаете доступ к аутентифицированному серверу, вы должны предоставить учетные данные. Полномочия запущенного процесса для NTLM может быть снабжен HttpClient, как показано ниже:

var handler = new HttpClientHandler { 
         Credentials = System.Net.CredentialCache.DefaultCredentials 
        }; 
var httpClient = new HttpClient(handler); 
var response = httpClient.GetAsync(new Uri(pageUrl)); 
0

Вы настраиваете себя на провал, так как существуют десятки причин, по которым запрос не может вернуть ответ 200 OK. Может быть, ответ не имеет содержания 204 No Content. Другое может быть, что запрос принимает только POST или PUT запросов. Другим, как вы обнаружили, может быть то, что перед ним стоит система аутентификации 401 Not Authorized. Другим может быть только то, что ответ является перенаправлением 301 Moved Permanently или 302 Found. Или это может быть за прокси 305, 306 и т. Д.

Единственный способ определить, действительно ли существует URL-адрес, - это запросить подтверждение другим. Google делает это, Facebook делает это, Pinterest делает это и т. Д. Как они это делают, они просят отправителя установить запись MX в своем DNS или метатег на свой index.html с помощью пользовательского маркера, который они генерируют. Если токен существует, то они - те, кем они говорят.

Все остальное ненадежно.