Member 12094403 Ответов: 2

Удаленный сервер вернул ошибку: 500


Привет, ребята. Я пытаюсь собрать ссылки на картинки в интернете.[Удалено].com но когда я запускаю свой код, я получаю ошибку удаленного сервера (500). В основном моя программа проходит через цикл для каждой страницы и собирает все ссылки на изображения в список. Я не уверен, что это ошибка с их стороны или с моей. Там есть 12 картинок на странице плюс ссылка на следующую страницу для разбора. Вот мой код:

Что я уже пробовал:

<pre>        Do
            Dim wrWebRequest As HttpWebRequest = CType(WebRequest.Create(strURL), HttpWebRequest)
            Dim wrWebResponse As HttpWebResponse = CType(wrWebRequest.GetResponse(), HttpWebResponse)
            Dim strStream As Stream = wrWebResponse.GetResponseStream()
            Dim intBuffer(8388608) As Byte
            Dim intBytesToRead As Integer = CInt(intBuffer.Length)
            Dim intBytesRead As Integer = 0
            While intBytesToRead > 0
                Dim intNumber As Integer = strStream.Read(intBuffer, intBytesRead, intBytesToRead)
                If intNumber = 0 Then
                    Exit While
                End If
                intBytesRead += intNumber
                intBytesToRead -= intNumber
            End While
            strStream.Close()
            Dim fsFileStream As New FileStream("index.html", FileMode.Create, FileAccess.Write)
            fsFileStream.Write(intBuffer, 0, intBytesRead)
            fsFileStream.Close()
            fsFileStream = New FileStream("index.html", FileMode.Open, FileAccess.Read)
            Dim srSteamReader As New StreamReader(fsFileStream)
            Dim strData As String = srSteamReader.ReadToEnd
            srSteamReader.Close()
            fsFileStream.Close()

            Dim rgxPost As Regex = New Regex("""url"": ""https://web.[DELETED].com/p/\w*\S*"">")
            Dim mchPost As Match = rgxPost.Match(strData)
            While mchPost.Success
                lstPosts.Add(mchPost.ToString)
                mchPost = mchPost.NextMatch
            End While

            Dim rgxCursor As Regex = New Regex("cursor=\w*\S*&uid=\d*")
            Dim mchCursor As Match = rgxCursor.Match(strData)
            If mchCursor.Success Then
                strURL = "https://web.[DELETED].com/kaiagerber?" & mchCursor.ToString
            Else
                strURL = ""
                Exit Do
            End If
        Loop

OriginalGriff

Пожалуйста, не размещайте URL - адреса на "случайных" сайтах-это делает вас похожим на спамера, и это может привести к тому, что вас вышвырнут с сайта...

Вы можете считать, что это ваше единственное предупреждение. :смеяться:

2 Ответов

Рейтинг:
14

Dave Kreskowiak

500 ошибок, возвращаемых сервером, означают, что серверный код каким-то образом потерпел неудачу.
Это может быть вызвано двумя причинами. Первый-это ошибка в коде на стороне сервера. Это редко встречается на производственном веб-сайте, но такое может случиться.

Другой тип сбоя-это тот, когда URL-адрес, который вы собрали и отправили на веб-сервер, не может быть законно проанализирован сервером и данные должным образом назначены переменным в коде веб-приложения.

Этот второй тип отказа является наиболее распространенным генератором 500 ошибок. Вы дали серверу некоторые данные, с которыми код приложения не знал, что делать, и/или вы не смогли дать ему некоторые данные, которые он ожидал.


Рейтинг:
1

raddevus

От кого :RFC для HTTP (https://tools.ietf.org/html/rfc7231#section-6.6.1[^])

6.6.1. 500 Внутренняя Ошибка Сервера

Код состояния 500 (Внутренняя ошибка сервера) указывает на то, что сервер
столкнулся с неожиданным условием, которое помешало ему выполнить
запрос.


Похоже, что ошибка может быть связана с тем, как сервер обрабатывает запрос.

Если бы вы отправляли плохой URL-адрес, то, скорее всего, вы получили бы 404 (ресурс не найден), но это тоже зависит от сервера.

Однако вам следует дважды проверить созданный URL-адрес (пройдя через код), а затем вручную проверить с помощью браузера, что происходит с сгенерированным URL-адресом.