0

我正在为 Windows Phone 制作一个应用程序,因为我需要一些保存在 Web 浏览器控件中的登录 cookie,所以我使用这里的代码:Grabing Cookies in Web Browser Control - WP7 to create a HTTPWebRequest and get some JSON data for parsing但我在这段代码的最后一行收到两个错误

 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:通过在“request_CallBack”之前添加“地址”来修复错误 (2),但错误 (1) 仍然存在。更新 2:修复了所有错误,但没有得到任何响应(空)。我的代码有什么问题?

4

1 回答 1

0

问题是两个用线做req.BeginGetResponse(New AsyncCallback(request_CallBack), WebRequest)这有两个问题。

  1. VB.Net 没有真正的一流功能,因此您必须使用AddressOf运算符来创建委托。编译器还将推断委托类型,因此您不需要构造函数
  2. BeginGetResponse 将状态对象作为第二个参数,而不是类型表达式。这是您在回调中需要的任何内容

所以:

req.BeginGetResponse(AddressOf request_CallBack, Nothing)

如果您需要将类型传递给请求回调,请使用

req.BeginGetResponse(AddressOf request_CallBack, GetType(WebRequest))

但是,这看起来像是复制更改,您想要的可能是

req.BeginGetResponse(AddressOf request_CallBack, req)
于 2013-03-09T16:47:20.640 回答