2016-06-20 13 views
1

RestApi URLに対してGETリクエストを行うことでJSONデータを返すメソッドを作成しています。私がデバッグモードでアプリケーションを実行すると、私は応答の下でデータを取得します。ここでASP.NET HTTPClientアクティブ化を待っている要求ステータスを取得します。

Id = 337, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"

私のコードです:ここでは

public class Methods 
{ 
    public static async Task<JObject> Get(string url, string username, string password) 
    { 
     var credentials = new NetworkCredential(username, password); 
     HttpClientHandler handler = new HttpClientHandler { Credentials = credentials }; 
     HttpClient client = new HttpClient(handler); 
     // client.BaseAddress = new Uri(url); 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 

     HttpResponseMessage response = await client.GetAsync(url); 

     if (response.IsSuccessStatusCode) 
     { 
      return JObject.Parse(await response.Content.ReadAsStringAsync()); 
     } 
     return new JObject { response.StatusCode }; 
    } 
} 

は、私がデータにアクセスしようとしています私の見解である:

public IActionResult Index() 
{ 
    // Methods RestMethod = new Methods(); 
    var data = Methods.Get("http://url/products", "domain\userid", "Password"); 

    return View(); 
} 

私はvar data = ..... thatsの場所でのビューでのデバッグを追加します私はwaiting for activationを得ています。

本当にありがとうございます。 :)

おかげで、

レイ

+0

あなたは現在タスクを待っていないので、「データ」はタスクであり、「JObject」ではないことに注意してください。 –

+0

hmm ..だから、この 'var data = await Methods.Get()'のように 'await'を追加する必要がありますか? – Ray

+1

私はそう思っています - あなたの 'Index'メソッドが非同期である必要があることを意味します。 –

答えて

2

あなたは非同期/を使用しようとしている場合は、あなたが呼び出し元のエントリポイントから始まるそれを行う必要が待っています。現在、実行中のタスクを返すメソッドGetを呼び出すが、完了するのを待つことはありません。あなたのIndexメソッドのコードですが、そうのように変更する必要があり、最も簡単な修正:

public async Task<IActionResult> Index() 
{ 
    // Methods RestMethod = new Methods(); 
    var data = await Methods.Get("http://url/products", "domain\userid", "Password"); 
    return View(); 
} 

またasync/awaitの詳細についてはStephen Cleary's blogを参照してください、彼はこのテーマに幅広くに書かれてもよく落とし穴やパターンを知られています。

+1

ありがとうございます。それは今意味がある。 :) – Ray

関連する問題