2016-10-15 16 views
0

私はオンラインのサンプルを見ていましたが、C#WEB APIサービスとC#コンソールアプリケーションをクライアントとして使用する製品のチュートリアルを見つけましたが、サービス内のすべての製品は、しかし、それはクライアントからそれを呼び出す方法を教えていません取得するには:C#クライアントのWeb APIからGetAllメソッドを呼び出す

public IEnumerable<Product> GetAllProducts() 
{ 
    ... 
} 

他のCRUDメソッドはので、私はそれを呼び出す方法を混乱していたIHttpActionResultを使用して宣言します。

using (var client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("http://localhost:59888/"); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    // HTTP GET ALL 
    HttpResponseMessage response = await client.GetAsync("api/products"); 
    if (response.IsSuccessStatusCode) 
    { 
     List<Model.Product> products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>(); 
    } 
} 

これは私に構文エラーを与える:

は、だから私のクライアントで私は盲目的に明らかに間違っている次のことをやって呼び出そうとしました。だから私はそれをどのようにコード化するのですか?サーバー、クライアントコード、またはその両方を変更する必要はありますか?コードであり、この作品単一の製品については

// HTTP GET Specific Product 
response = await client.GetAsync("api/products/1"); 
if (response.IsSuccessStatusCode) 
{ 
    Model.Product product = await response.Content.ReadAsAsync<Model.Product>();   
} 

とサーバは次のとおりです。

public IHttpActionResult GetProduct(int id) 
{ 
    var product = repository.GetByID(id); 
    if (product != null) 
     return Ok(product); 
    else 
     return NotFound();  
} 

答えて

0
List<Model.Product> products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>(); 

あなたが最後に決算>を逃しました。正しい:

var products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>>(); 
+0

ジー)私はダム私は今、この記事を削除することができますおかげで、明らかにIEnumerableをリストからジェネリックリストに暗黙的にキャストすることはできませんが、私は – Glen

+0

1つを把握します。しかし、あなたは '.ToListを(追加することができます'をIEnumerableの最後に追加してリストとして取得します。私は 'var'に変更したので、左は' IEnumerable > '型でなければなりません。これはその行にエラーを引き起こすはずです。 –

関連する問題