0

私は Windows Phone 用のアプリを作成しています。Web ブラウザー コントロールに保存されているログイン Cookie が必要なため、次のコードを使用しています: Web ブラウザー コントロールで Cookie を取得する - WP7 で HTTPWebRequestを作成し、解析用の JSON データを取得します。しかし、このスニペットの最後の行で 2 つのエラーが発生しています

 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' 式またはラムダ式が必要です。

直し方?

更新 1: 'request_CallBack' の前に 'Address Of' を追加してエラー (2) を修正しましたが、エラー (1) はまだ残っています。更新 2: すべてのエラーを修正しましたが、応答がありません (空)。コードの何が問題になっていますか?

4

1 に答える 1

0

問題は 2 つです 行でreq.BeginGetResponse(New AsyncCallback(request_CallBack), WebRequest)これには 2 つの問題があります。

  1. VB.Net には真のファースト クラス関数がないため、AddressOf演算子を使用してデリゲートを作成する必要があります。また、コンパイラはデリゲート型を推測するので、コンストラクターは必要ありません
  2. BeginGetResponse は、型式ではなく、状態オブジェクトを 2 番目のパラメーターとして受け取ります。これは、コールバックで必要なものです

それで:

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 に答える