Vb.net Web请求是一种类型,不能用作表达式
我正在为Windows Phone制作一个应用程序,因为我需要一些保存在Web浏览器控件中的登录cookie,所以我正在使用下面的代码:创建一个HTTPWebRequest并获取一些JSON数据进行解析,但我在这段代码的最后一行遇到两个错误Vb.net Web请求是一种类型,不能用作表达式,vb.net,httpwebrequest,windows-phone-8,webbrowser-control,windows-phone,Vb.net,Httpwebrequest,Windows Phone 8,Webbrowser Control,Windows Phone,我正在为Windows Phone制作一个应用程序,因为我需要一些保存在Web浏览器控件中的登录cookie,所以我正在使用下面的代码:创建一个HTTPWebRequest并获取一些JSON数据进行解析,但我在这段代码的最后一行遇到两个错误 Dim browser = New WebBrowser() Dim brwhttp = GetType(WebRequestCreator).GetProperty("BrowserHttp") Dim requestFactory =
Dim browser = New WebBrowser()
Dim brwhttp = GetType(WebRequestCreator).GetProperty("BrowserHttp")
Dim requestFactory = TryCast(brwhttp.GetValue(Browser, Nothing), IWebRequestCreate)
Dim uri = New Uri("some-url")
Dim req = requestFactory.Create(uri)
req.Method = "GET"
req.BeginGetResponse(New AsyncCallback(request_CallBack), WebRequest)
(1) .'WebRequest“”是一个类型,不能用作表达式。
(2). 委托“System.AsyncCallback”需要“AddressOf”表达式或lambda表达式作为其构造函数的唯一参数
如何修复
更新1:通过在“请求_回调”之前添加“的地址”修复了错误(2),但错误(1)仍然存在。
更新2:修复了所有错误,但没有得到任何响应(空)。我的代码有什么问题?问题在于行
req.BeginGetResponse(新的AsyncCallback(请求回调),WebRequest)
这有两个问题
地址来创建委托。此外,编译器将推断委托类型,因此您不需要构造函数
req.BeginGetResponse(AddressOf request_CallBack, GetType(WebRequest))
然而,这看起来像是一个复制更改,您想要的可能是
req.BeginGetResponse(AddressOf request_CallBack, req)
@user2141754已更正,除非您需要将信息传递给请求\u Callback这是我的请求\u回调代码:
Private Sub request\u回调(asyncResult作为IAsyncResult)Dim webRequest作为HttpWebRequest=DirectCast(asyncResult.AsyncState,HttpWebRequest)Dim webResponse作为HttpWebResponse=DirectCast(webRequest.EndGetResponse(asyncResult),HttpWebResponse)Dim tempStream As New MemoryStream()webResponse.GetResponseStream().CopyTo(tempStream)Dim sr As New StreamReader(tempStream)Dim resp As String=sr.ReadToEnd MessageBox.Show(resp)End Sub
在第1行抛出错误。无法将“System.RuntimeType”类型的对象强制转换为“System.Net.HttpWebRequest”类型。非常感谢!但最后一行还有一个错误:无效的跨线程访问。System.Windows.ni.dll中出现“System.UnauthorizedAccessException”类型的异常,但未在用户中处理code@user2141754请尝试Me.Invoke(addressof Messagebox.Show)
在UI threadMe上执行它。WP上显然不存在Invoke。
req.BeginGetResponse(AddressOf request_CallBack, req)