Abfrage ob URL erreichbar ist

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von CHAGBox.

    Abfrage ob URL erreichbar ist

    Hallo VB Spezialisten

    Ich komme ursprünglich aus der Excel VBA Sparte und beschäftige mich seit einiger Zeit auf mit VB - ohne A. Dabei bin ich nun auf folgende Herausforderung gestossen, die ich leider alleine nicht gelöst bekomme.

    Es soll eine Abfrage erfolgen, ob eine bestimmte URL erreichbar ist.
    Das kann entweder eine URL (beispiel.de) oder eine Datei (beispiel.de/test.txt) sein.

    Mit dieser Funktion kann ich die Abfrage in VBA (Excel) problemlos auf meinem privaten und geschäftlichen Laptop ausführen:

    VB.NET-Quellcode

    1. Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
    2. Public Function GetLinkStatus(ByVal strUrl As String) As Boolean
    3. Dim objXMLHTTP As Object
    4. If Not Left$(strUrl, 7) = "http://" Then strUrl = "http://" & strUrl
    5. Set objXMLHTTP = CreateObject("Msxml2.XMLHTTP")
    6. On Error Resume Next
    7. objXMLHTTP.Open "GET", strUrl, False
    8. objXMLHTTP.Send
    9. GetLinkStatus = objXMLHTTP.Status = 200
    10. Set objXMLHTTP = Nothing
    11. On Error GoTo 0
    12. End Function
    13. Sub TestCon()
    14. Dim sURL As String
    15. DeleteUrlCacheEntry(sURL)
    16. If GetLinkStatus(sURL) Then MsgBox("Erreichbar")
    17. End Sub


    Übernehme ich den Code so in VB, funktioniert die Ausführung auf meinem privaten Laptop einwandfrei. Auf meinem geschäftlichen Laptop kommt allerdings die Fehlermeldung "The remote Server returned an error: (407) Proxy Authentication Required." und die Ausführung meines Programms wird abgebrochen (s. Screenshot im Anhang). Dieser geschäftliche Laptop ist im gleichen WLAN wie der private, allerdings zusätzlich via VPN mit dem Firmennetzwerk verbunden.

    Daher habe ich es mit einer anderen Funktion versucht. Diese funktioniert auf meinem privaten LT einwandfrei, der geschäftliche erreicht die Adresse nie.

    VB.NET-Quellcode

    1. Function IsURLAvail(ByVal sURL As String) As Boolean
    2. Try
    3. Dim oRequest As Net.HttpWebRequest = Net.HttpWebRequest.Create(sURL)
    4. With oRequest
    5. .Proxy = System.Net.WebRequest.DefaultWebProxy
    6. .Credentials = System.Net.CredentialCache.DefaultCredentials
    7. End With
    8. Dim oResponse As Net.WebResponse = oRequest.GetResponse
    9. oResponse.Close()
    10. Return True
    11. Catch ex As Exception
    12. Return False
    13. End Try
    14. End Function


    Ich gehe davon aus, dass die VPN Verbindung auf meinem geschäftlichen LT die Abfrage blockiert. Mich wundert allerdings, dass die gleiche Funktion auf dem geschäftlichen LT einwandfrei läuft wenn sie über Excel VBA ausgeführt wird.

    Wie kann ich wohl erreichen, dass mein Code "trotz" VPN Verbindung diese Abfrage durchführen kann?

    Ich denke dass es keine Rolle spielt, trotzdem hier noch 1-2 Eckdaten:

    Geschäftl. LT: Win7 Enterprise SP1, 64b
    Privater LT: Win7 Home Premium SP1, 64b


    Besten Dank für Eure Unterstützung & Gruss, Henner
    Dateien
    • Untitled.bmp

      (221,17 kB, 160 mal heruntergeladen, zuletzt: )

    CHAGBox schrieb:


    Andere Ideen? Danke für Deine Rückmeldung, Gruss Henner


    stackoverflow.com/questions/23…y-authentication-required

    Dann würde ich durch herrn google leute finden die das selbe problem haben wie hier da dürfte auch deine lösung stecken

    "Da ich eine vollkommener NOOB bin kannst du aber gerne die antwort von RoadOfGermany abwarten er kann dir sicher heflen xD"
    Ich dachte dass hier evtl. schonmal jemand das gleiche Problem hatte, bei Google habe ich nichts gefunden was mir im Zusammenhang mit VPN helfen würde. Wenn ich die VPN Verbindung auf dem LT trenne funktioniert der Code ja einwandfrei. Da das Programm aber auf den LT's Anderer laufen soll brauche ich eine Lösung die mit VPN Verbindung und ohne Änderung der Settings im IE funktioniert.

    Vllt meldet sich ja noch jemand, ansonsten vielen Dank. Gruss
    Die VPN Verbindung ist nicht das Problem, sondern das deine Anfrage über den Proxy der Firma geht und der erwartet Logindaten (steht doch sogar in der Fehlermeldung).
    Bei deinem zweiten Code verschluckst du die Exception.
    Garnicht? Wenn doch ist etwas in der Netzwerkkonfiguration schief gegangen (oder war absicht, was ich mir nicht vorstellen kann).
    Excel umgeht den Proxy nicht, sondern schickt die Anfrage durch den Proxy (mit Anmeldedaten).