wie kann ich denn den HTTP Status Code ermitteln

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von VBNEWBIE1987.

    wie kann ich denn den HTTP Status Code ermitteln

    Hallo wollte mal fragen ob das so richtig ist
    funktioniert zwar aber ich habe bedenken ob das so richtig ist

    noch eine frage wie kann ich denn den HTTP Status Code ermitteln


    HTTP Status Code
    500 Internal server error
    400 Bad request
    200

    VB.NET-Quellcode

    1. #Region "Get_Json_String"
    2. Private Get_Json_String()
    3. Try
    4. Dim str_request As String = Nothing
    5. Dim sURL As String = url_request
    6. Dim req As HttpWebRequest = HttpWebRequest.Create(sURL)
    7. Dim resp As WebResponse = req.GetResponse()
    8. If resp.ContentLength > 0 = True Then
    9. Dim sResp As StreamReader = New StreamReader(resp.GetResponseStream)
    10. str_request = sResp.ReadToEnd
    11. sResp.Close()
    12. resp.Close()
    13. If str_request.Length > 0 = True Then
    14. JsonString = str_request
    15. End If
    16. End If
    17. Catch ex As Exception
    18. MessageBox.Show(ex.Message)
    19. 'MsgBox(ex.ToString)
    20. End Try
    21. End Sub
    22. #End Region

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBNEWBIE1987“ ()

    ich denke das es so besser ist oder

    VB.NET-Quellcode

    1. Dim str_request As String = Nothing
    2. Dim sURL As String = url_request
    3. 'Dim req As HttpWebRequest = HttpWebRequest.Create(sURL)
    4. 'Dim resp As WebResponse = req.GetResponse()
    5. Dim req As HttpWebRequest = CType(WebRequest.Create(sURL), HttpWebRequest)
    6. ' Sends the request and waits for a response.
    7. Dim resp As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)
    8. If resp.StatusCode = HttpStatusCode.OK Then
    9. Dim sResp As StreamReader = New StreamReader(resp.GetResponseStream)
    10. str_request = sResp.ReadToEnd
    11. sResp.Close()
    12. resp.Close()
    13. If str_request.Length > 0 = True Then
    14. JsonString = str_request
    15. 'TextBox2.Text = JsonString
    16. Get_Varriablen_Json_String()
    17. End If
    18. Else
    19. If resp.StatusCode = HttpStatusCode.BadRequest Then
    20. MsgBox(resp.StatusCode = HttpStatusCode.BadRequest)
    21. End If
    22. If resp.StatusCode = HttpStatusCode.InternalServerError Then
    23. MsgBox(resp.StatusCode = HttpStatusCode.InternalServerError)
    24. End If
    25. End If


    msdn.microsoft.com/en-us/libra…statuscode(v=vs.110).aspx




    VB.NET-Quellcode

    1. MsgBox((resp.StatusCode = HttpStatusCode.OK).ToString(), MsgBoxStyle.Information)
    2. MsgBox(resp.StatusCode)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VBNEWBIE1987“ ()

    hab ein neues Problem,

    die Else, wird nicht angesprochen geht direct zur Exception

    VB.NET-Quellcode

    1. Catch ex As Exception
    2. 'MessageBox.Show(ex.Message)
    3. MsgBox(ex.ToString)
    4. End Try
    5. If resp.StatusCode = HttpStatusCode.OK Then
    6. '---------
    7. Else ' Keine Funktion
    8. If resp.StatusCode = HttpStatusCode.BadRequest Then
    9. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Bad Request") ' = 400 Bad(request)
    10. End If
    11. If resp.StatusCode = HttpStatusCode.Unauthorized Then
    12. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Unauthorized") ' = 401 Unauthorized
    13. End If
    14. If resp.StatusCode = HttpStatusCode.InternalServerError Then
    15. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Internal Server Error") ' = 500 Internal server error
    16. End If


    VB.NET-Quellcode

    1. #Region "Get_Json_String"
    2. Private Sub Get_Json_String()
    3. Try
    4. Dim str_request As String = Nothing
    5. Dim sURL As String = url_request
    6. Dim req As HttpWebRequest = CType(WebRequest.Create(sURL), HttpWebRequest)
    7. Dim resp As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse) ' Sends the request and waits for a response.
    8. If resp.StatusCode = HttpStatusCode.OK Then
    9. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Request OK") ' = 200 OK
    10. Dim sResp As StreamReader = New StreamReader(resp.GetResponseStream)
    11. str_request = sResp.ReadToEnd
    12. sResp.Close()
    13. resp.Close()
    14. If str_request.Length > 0 = True Then
    15. JsonString = str_request
    16. 'run
    17. End If
    18. Else ' Keine Funktion
    19. If resp.StatusCode = HttpStatusCode.BadRequest Then
    20. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Bad Request") ' = 400 Bad(request)
    21. End If
    22. If resp.StatusCode = HttpStatusCode.Unauthorized Then
    23. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Unauthorized") ' = 401 Unauthorized
    24. End If
    25. If resp.StatusCode = HttpStatusCode.InternalServerError Then
    26. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Internal Server Error") ' = 500 Internal server error
    27. End If
    28. End If
    29. Catch ex As Exception
    30. 'MessageBox.Show(ex.Message)
    31. MsgBox(ex.ToString)
    32. End Try
    33. End Sub
    34. #End Region
    If a WebException is thrown, use the Response and Status properties of the exception to determine the response from the server.

    Heißt im Umkehrschluss: Wenn der Server irgendwas anderes als StatusCode 200 (=OK) meldet, wird eine WebException ausgelöst, die man abfangen sollte. Und in genau diesem Fall kann man anhand des StatusCodes ermitteln, was "schiefgelaufen" ist.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    in diesem Fall sollte ich eigentlich ein "Unauthorized" zurückbekommen

    wie fange ich den die Exception den ab ???


    VB.NET-Quellcode

    1. If resp.StatusCode = HttpStatusCode.Unauthorized Then
    2. MsgBox((resp.StatusCode), MsgBoxStyle.Information, "Unauthorized") ' = 401 Unauthorized
    Du musst nicht die Response auswerten, sondern die (Web)-Exception die durch den Response ausgelöst wird:

    VB.NET-Quellcode

    1. Dim response As HttpWebResponse
    2. Try
    3. response = DirectCast(request.GetResponse(), HttpWebResponse)
    4. Dim rstream As Stream = response.GetResponseStream
    5. Dim reader As IO.StreamReader = New StreamReader(rstream)
    6. Dim pagestream As New StringBuilder
    7. Do Until reader.EndOfStream
    8. pagestream.AppendLine(reader.ReadLine)
    9. Loop
    10. Me.RichTextBox1.Text = pagestream.ToString
    11. response.Close()
    12. Catch ex As WebException
    13. 'Testausgabe
    14. RichTextBox1.AppendText(CStr(CType(ex.Response, HttpWebResponse).StatusCode))
    15. RichTextBox1.AppendText(CStr(CType(ex.Response, HttpWebResponse).StatusDescription))
    16. 'Abfangen:
    17. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.Unauthorized Then
    18. MsgBox((CType(ex.Response, HttpWebResponse).StatusCode), MsgBoxStyle.Information, "Unauthorized") ' = 401 Unauthorized
    19. End If
    20. End Try
    hallo jetzt wollte ich probieren eine funktion daraus zu basteln ^^
    funktioniert aber nicht so recht, hat jemand vielleicht eine idee

    was mach ich hier falsch

    VB.NET-Quellcode

    1. Public Function Get_Json_String(ByVal address As String, ByVal Conect As Boolean, ByVal Json_String As String, ByVal Req_StatusCode As String, ByVal Req_StatusDescription As String) As String
    2. Try
    3. Dim request As WebRequest = WebRequest.Create(address) 'Create a request for the URL.
    4. request.Credentials = CredentialCache.DefaultCredentials ' If required by the server, set the credentials.
    5. Dim response As WebResponse = request.GetResponse() ' Get the response.
    6. Req_StatusDescription = (CStr(CType(response, HttpWebResponse).StatusDescription)) ' Display the status.
    7. Dim dataStream As Stream = response.GetResponseStream() 'Get the stream containing content returned by the server.
    8. Dim reader As New StreamReader(dataStream) 'Open the stream using a StreamReader for easy access.
    9. Dim responseFromServer As String = reader.ReadToEnd() 'Read the content.
    10. 'Get_Json_String = responseFromServer
    11. Json_String = responseFromServer
    12. Catch ex As WebException
    13. Return Conect = False
    14. Req_StatusCode = (CStr(CType(ex.Response, HttpWebResponse).StatusCode))
    15. Req_StatusDescription = (CStr(CType(ex.Response, HttpWebResponse).StatusDescription))
    16. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.BadRequest Then
    17. MsgBox((CType(ex.Response, HttpWebResponse).StatusCode), MsgBoxStyle.Information, "Bad Request") ' = '400: Bad(request)
    18. End If
    19. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.Unauthorized Then
    20. MsgBox((CType(ex.Response, HttpWebResponse).StatusCode), MsgBoxStyle.Information, "Unauthorized") ' = 401 Unauthorized
    21. End If
    22. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.NotFound Then
    23. MsgBox((CType(ex.Response, HttpWebResponse).StatusCode), MsgBoxStyle.Information, "Not found") ' = 404 Not found
    24. End If
    25. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.InternalServerError Then
    26. MsgBox((CType(ex.Response, HttpWebResponse).StatusCode), MsgBoxStyle.Information, "Internal Server Error") ' = '500 Internal server error
    27. End If
    28. End Try
    29. Return Conect = True
    30. Return Json_String
    31. End Function
    32. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBNEWBIE1987“ ()

    Was ist denn das Problem?

    Ach ja... bei einer solch "allgemeinen" Funktionen würde ich nie MessageBoxen anzeigen lassen. Überlass es dem Aufrufer wie er mit Fehlern umgeht - ob er sie als Meldung anzeigt oder in ein Log schreibt. Wegen so einer Programmierung haben wir in der Firma zurzeit große Probleme eine Automatisierungsschnittstelle für eine Anwendung zu bauen, weil sie bei jedem quersitzenden Furz eine MsgBox anzeigt und damit blockiert.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Du kannst btw auch in einen Integer casten und somit die StatusCodes als Integer erhalten, 404 usw. Finde ich leichter.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    VB.NET-Quellcode

    1. #Region " ############################# VAR REQUEST ############################# "
    2. Dim StatusCode_OK As Boolean = False
    3. Dim Json_String
    4. Dim Req_StatusCode As String
    5. Dim Req_StatusDescription As String
    6. Dim ResponseFromServer_OK As Boolean = False
    7. Dim Progressvalue
    8. Dim ExceptionStatusCode As String = Nothing
    9. #End Region




    VB.NET-Quellcode

    1. #Region " ############################# Get Json String ############################# "
    2. Public Function Get_Json_String(ByVal address As String) As String
    3. Try
    4. ProgressBar1.Value = 0
    5. Dim request As WebRequest = WebRequest.Create(address) 'Create a request for the URL.
    6. request.Credentials = CredentialCache.DefaultCredentials ' If required by the server, set the credentials.
    7. Dim response As WebResponse = request.GetResponse() ' Get the response.
    8. Req_StatusDescription = (CStr(CType(response, HttpWebResponse).StatusDescription)) ' Display the status.
    9. If CType(response, HttpWebResponse).StatusCode = HttpStatusCode.OK Then
    10. Dim fileSize As Integer = response.ContentLength ' Ask the server for the file size and store it
    11. StatusCode_OK = True
    12. Dim dataStream As Stream = response.GetResponseStream() 'Get the stream containing content returned by the server.
    13. Dim reader As New StreamReader(dataStream) 'Open the stream using a StreamReader for easy access.
    14. Dim responseFromServer = Nothing
    15. responseFromServer = reader.ReadToEnd() 'Read the content.
    16. Dim fileReader As Integer = responseFromServer.Length
    17. Progressvalue = ((fileReader / fileSize) * 100)
    18. reader.Close()
    19. response.Close()
    20. ProgressBar1.Maximum = 100
    21. ProgressBar1.Value = Progressvalue
    22. If responseFromServer.Length > 0 = True Then
    23. ResponseFromServer_OK = True
    24. Json_String = responseFromServer
    25. responseFromServer = Nothing
    26. End If
    27. Else
    28. StatusCode_OK = False
    29. ResponseFromServer_OK = False
    30. End If
    31. Catch ex As WebException
    32. Req_StatusCode = (CStr(CType(ex.Response, HttpWebResponse).StatusCode))
    33. Req_StatusDescription = (CStr(CType(ex.Response, HttpWebResponse).StatusDescription))
    34. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.BadRequest Then
    35. ExceptionStatusCode = ((CType(ex.Response, HttpWebResponse).StatusCode) & "Bad Request") ' = '400: Bad(request)
    36. End If
    37. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.Unauthorized Then
    38. ExceptionStatusCode = ((CType(ex.Response, HttpWebResponse).StatusCode) & "Unauthorized") ' = 401 Unauthorized
    39. End If
    40. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.NotFound Then
    41. ExceptionStatusCode = ((CType(ex.Response, HttpWebResponse).StatusCode) & " not found") ' = 404 not found
    42. End If
    43. If CType(ex.Response, HttpWebResponse).StatusCode = HttpStatusCode.InternalServerError Then
    44. ExceptionStatusCode = ((CType(ex.Response, HttpWebResponse).StatusCode) & "Internal Server Error") ' = '500 Internal server error
    45. End If
    46. StatusCode_OK = False
    47. ResponseFromServer_OK = False
    48. Catch ex As Exception
    49. ex = Nothing
    50. StatusCode_OK = False
    51. ResponseFromServer_OK = False
    52. End Try
    53. Return Json_String
    54. End Function
    55. #End Region




    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Get_Json_String("http://Json")
    3. End Sub



    Würde mich über Verbesserungsvorschläge freuen