Ошибка 404 при получении ответа сервера vb.net

Я совсем новичок в веб-запросах, поэтому понятия не имею, в чем причина ошибки, которую я получаю.

Я пытаюсь войти в форму, следуя руководству Microsoft по веб-запросу, но когда я хочу получить ответ сервера, у меня возникает следующая ошибка:

"the remote server returned an error (404) not found"

Итак, я знаю, что URL-адрес, который я использую, действительно существует, а затем задаюсь вопросом, какая часть кода плохая. Может быть, это потому, что я делаю запрос HTTPS, в отличие от учебника, и это что-то меняет? Кроме того, я немного сбит с толку, получив ответ от сервера напрямую: не должен ли быть какой-то триггер, чтобы узнать, когда сервер ответил?

Dim request = WebRequest.Create("https://ssl.vocabell.com/mytica2/login")
request.Credentials = CredentialCache.DefaultCredentials
request.Method = "POST"
Dim byteArray = Encoding.UTF8.GetBytes("_username=x&_password=x")
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = byteArray.Length
Dim dataStream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim reponse = request.GetResponse() 'ERROR
MsgBox(CType(reponse, HttpWebResponse).StatusDescription)
Using ds = reponse.GetResponseStream
     Dim reader = New StreamReader(ds)
     MsgBox(reader.ReadToEnd)
End Using
reponse.Close()

Спасибо за ваше время, и если у вас есть какой-либо соответствующий учебник по теме, я был бы рад прочитать его!

Может не сработать, но попробуйте поменять request.Method = "POST" на request.Method = "GET", стоит попробовать

K.Madden 01.07.2019 12:45

«Разве не должен быть какой-то триггер, чтобы узнать, когда сервер ответил?» ... этот код является синхронным, поэтому в основном ваш код VB ждет, пока не получит ответ, прежде чем продолжить. Если бы вы выполняли асинхронный запрос, это было бы разумным соображением.

ADyson 01.07.2019 12:45

@K.Madden, у вас не больше представления, чем у меня, чего ожидает удаленный сайт, но по опыту я сомневаюсь, что он принимает имя пользователя и пароль в качестве параметров GET / querystring - это обычно считается большой безопасностью нет-нет. Приведенный выше запрос явно пытается имитировать обратную передачу формы, поэтому я был бы очень удивлен, если бы переход на GET оказался полезным. Также обычно, если сайт настроен правильно, использование неправильного метода HTTP должно привести к ответу 405 (метод не разрешен), а не 404 (не найден).

ADyson 01.07.2019 12:47

@ADyson Ах, хорошо, спасибо за объяснение, я только что вспомнил, когда некоторое время назад я dd asp был довольно новым новичком, который я видел где-то в Интернете, и это помогло мне. Будучи новичком, я не заглядывал в безопасность и все такое! Спасибо

K.Madden 01.07.2019 12:50

Спасибо за Ваш ответ ! @ADyson да, я думал, что ошибка возникла из-за кода, поэтому я не думал, что было бы полезно указывать реальный URL-адрес, с которым я пытаюсь взаимодействовать, вот он: ssl.vocabell.com/mytica2/логин

Gary F 01.07.2019 12:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
501
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Упомянутая вами страница существует и использует HTTPS, но если вы посмотрите на тег формы внутри нее, это будет выглядеть так:

<form class = "login-form form-horizontal" action = "/mytica2/login_check" method = "POST">

Это означает, что он не отправляет форму обратно на тот же URL-адрес, что и страница, вместо этого он отправляет ее на URL-адрес, содержащийся в этом атрибуте «действие». Если вы пытаетесь использовать свой код для имитации отправки формы входа, похоже, вам нужно вместо этого отправить запрос POST на https://ssl.vocabell.com/mytica2/login_check.

Другие вопросы по теме