2009-10-09 3 views
1

도움을 받으려면 미리 감사드립니다.MSXML2.XMLHTTP ASP에 입력 한 URL의 유효성을 검사하도록 요청하십시오.

우리 클라이언트가 URL이 존재하고 작동하는지 확인하는 텍스트 필드에 URL을 입력 할 수있게하려고합니다. - OK, 500의 의 상태입니다 - 서버 오류, 또는 (404)의 상태 - 페이지를 찾을 수 없음 200의 상태 :

내가 확인하고 싶은 3 개 가지 결과가 있습니다.

ASP 클래식에서 다음 코드를 실행하면 404를 가져와야 할 때 12007의 상태 코드가 나타납니다. 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 

또는 여기 뭔가 어긋납니다. 위에 언급 된 표준 이외에 어떤 상태 코드가 표시 될 수 있습니까?

답변

4

12007은 Windows HTTP 오류로, 이름이 확인되지 않았 음을 의미합니다. 호스트 이름을 IP 주소로 해석 할 수 없거나 해당 IP 주소에 연결을 설정할 수없는 경우 200, 404, 500 또는 그와 같은 것을 가져올 수 없습니다. 이 경우 12000s 범위의 HTTP 상태 코드가 아닌 Windows 예외 번호 인 오류 코드가 표시됩니다.

이 예외 번호 목록은 list을 참조하십시오.

둘째, 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을 테스트 할 수 있습니다 : - 이것은 내가 사용하는 것이 코드입니다.

+0

팁을 주셔서 감사합니다. – jamesmhaley

+0

"oXML"은 함수의 마지막 줄에서 "xhr"이어야하지만이 점도 잘 알고 있습니다. –

+0

@Don : 좋은 걸음, 고정됨. – AnthonyWJones

관련 문제