2

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

クライアントがテキスト フィールドに URL を入力できるようにして、URL が存在し、機能しているかどうかを確認したいと考えています。

確認したい結果は 3 つあります。ステータス 200 - OK、ステータス 500 - サーバー エラー、またはステータス 404 - ページが見つかりません。

ASP クラシックで次のコードを実行すると、404 になるはずのステータス コード 12007 が返されます。これは、404 のコードを返す Web サーバーが見つからないためですか?

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

1 に答える 1

6

12007 は、名前が解決されていないことを意味する Windows HTTP エラーです。ホスト名を IP アドレスに解決できない場合、またはその IP アドレスへの接続を確立できない場合、200、404、500 などを取得することはできません。このような場合、HTTP ステータス コードではなく、Windows 例外番号である 12000 番台のエラー コードが表示されます。

これらの例外番号のリストについては、このリストを参照してください。

ところで、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 をテストできます。

于 2009-10-10T12:21:25.247 に答える