MSXML2.XMLHTTP Запрос на проверку введенного URL в ASP Classic - PullRequest
1 голос
/ 09 октября 2009

Заранее благодарим за любую помощь.

Я хочу, чтобы наш клиент мог ввести URL-адрес в текстовое поле, которое затем проверяет, существует ли URL-адрес и работает ли он.

Есть 3 возможных результата, которые я хочу проверить: Состояние 200 - ОК, Состояние 500 - Ошибка сервера, Или статус 404 - страница не найдена.

При выполнении следующего кода в ASP classic я получаю код состояния 12007, когда мне нужно получить 404. Это потому, что он не может найти веб-сервер для возврата кода 404?

Function CheckURL(vURL)
    ON ERROR RESUME NEXT
    Set oXML=Server.CreateObject("MSXML2.XMLHTTP") : oXML.Open "POST",vURL,false : oXML.Send()
    CheckURL = oXML.status
    Set oXML = nothing
End Function

Или здесь что-то не так. Какие коды состояния я могу увидеть, кроме упомянутого выше стандарта.

1 Ответ

4 голосов
/ 10 октября 2009

12007 - это ошибка Windows HTTP, которая означает, что имя не было разрешено. Вы не можете получить 200, 404, 500 или любую другую вещь, если имя хоста не может быть преобразовано в IP-адрес или не может быть установлено соединение с этим IP-адресом. В этих случаях вы получите коды ошибок в диапазоне 12000, которые не являются кодами состояния HTTP, но являются номерами исключений Windows.

См. Этот список для списка этих номеров исключений.

Кстати, XMLHTTP не является безопасным объектом для использования в ASP. Кроме того, почему вы используете POST? Вот код, который я бы использовал: -

Function CheckURL(vURL)
    On Error Resume Next
    Set xhr = CreateObject("MSXML2.ServerXMLHTTP.3.0")
    xhr.Open "HEAD", vURL, false
    xhr.Send
    CheckURL = xhr.status
End Function

Использование HEAD позволяет протестировать URL-адрес без фактической загрузки потенциально большого тела объекта.

...