【问题标题】:404 error while getting server response vb.net获取服务器响应 vb.net 时出现 404 错误
【发布时间】:2019-11-12 00:26:55
【问题描述】:

我完全是 webrequest 的初学者,所以我不知道是什么导致了我得到的错误。

我尝试按照 microsoft tutorial for webrequest 登录表单,但是当我想获得服务器响应时,出现以下错误:

“远程服务器返回错误(404)未找到”

所以我知道我使用的 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",值得一试
  • "难道不应该有一种触发器可以知道服务器何时应答吗?" ...这段代码是同步的,所以基本上你的 VB 代码会等到它得到响应后再继续。如果您正在执行异步请求,那么这将是一个有效的考虑因素。
  • @K.Madden 你不知道我对远程站点的期望,但从经验来看,我怀疑它接受用户名和密码作为 GET / 查询字符串参数 - 这通常被认为是一个很大的安全性不,不。上面的请求显然是在尝试模拟表单回发,所以如果更改为 GET 有帮助,我会感到非常惊讶。通常,如果站点配置正确,那么使用错误的 HTTP 方法应该会导致 405(不允许的方法)响应,而不是 404(未找到)。
  • @ADyson 嗯,好的,谢谢您的解释,我刚刚回忆起不久前我作为一个相当新的初学者在网上某处看到的 dd asp,它帮助了我。作为初学者,我并没有考虑安全问题!谢谢
  • 感谢您的回答! @ADyson 是的,我认为错误来自代码,所以我认为提供我尝试与之交互的真实 url 没有用,这里是:ssl.vocabell.com/mytica2/login

标签: vb.net http webrequest system.net.webexception


【解决方案1】:

您提到的页面确实存在并且使用了HTTPS,但是如果您查看其中的表单标签,它是这样的:

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

这意味着它不会将表单发布回与页面相同的 URL,而是将其发送到包含在该“操作”属性中的 URL。如果您尝试使用您的代码来模拟登录表单的提交,那么您似乎需要将您的 POST 请求发送到 https://ssl.vocabell.com/mytica2/login_check

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多