我将从VB应用程序访问REST webservice。我创建了一个HttpWebResponse对象并调用它上面的GetRequestStream方法,但是在调用GetResponse时,抛出了401异常。
以下是我的代码(修改后发布):
以下是我的代码(修改后发布):
Dim webRequest = DirectCast(WebRequest.Create(endpoint), HttpWebRequest)
webRequest.Method = "POST"
webRequest.ContentLength = contentLength
webRequest.ContentType = "application/x-www-form-urlencoded"
request.Credentials = New NetworkCredential(Username, Password)
' Works fine
Using stream As Stream = webRequest.GetRequestStream()
stream.Write(data, 0, data.Length)
End Using
' Barfs
Dim response As HttpWebResponse = DirectCast(webRequest.GetResponse(), HttpWebResponse)
当我调用“webRequest.GetResponse()”时,立即出现401异常。响应中有一个“WWW-Authenticate”头,带有适当的领域信息。我尝试设置“webRequest.PreAuthenticate = True”,以及手动使用“webRequest.Headers.Add(HttpRequestHeader.Authorization, _authheader)”设置头文件,但没有成功。
由于这是SSL流量,因此似乎无法使用Fiddler / Wireshark等工具监视这些请求。我确定有一种方法可以监视它,只是我还没有找到。
提前感谢您的帮助,
--Connor
request.Credentials = New NetworkCredential(Username, Password)
无效时它却奏效了。由于我使用的是 HttpWebRequest,所以我使用request.Headers.Add("AUTHORIZATION", authorization);
添加了授权头。 - cwadding