【发布时间】: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