Web API: Client: Call a Web API from a .net client

时间:2023-03-09 20:09:25
Web API: Client: Call a Web API from a .net client

原文地址: http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client

翻译地址:http://www.cnblogs.com/r01cn/archive/2012/11/20/2779011.html

Server Code:

1. 用EF创建Code First的Project;

2. 用VS创建Web API code;

Client Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Test.EntityFramework.Models; namespace Test.WebAPI.Client
{
class Program
{
static void Main(string[] args)
{
// Unblock;
TestUnblock();
Console.WriteLine("Unblock...");

// Unblock

Test();

           // Block
Test().Wait(); Console.WriteLine("Exist..."); Console.ReadLine();
} public static async Task Test()
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:55165/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync("api/test"); // Blocking call // Get
if (response.IsSuccessStatusCode)
{
// Parse the response body. Blocking!
var products = await response.Content.ReadAsAsync<IEnumerable<Test.EntityFramework.Models.Test>>();
foreach (var p in products)
{
Console.WriteLine("{0}\t{1};", p.ID, p.Title);
}
}
else
{
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
} // Post
var testEntity = new Test.EntityFramework.Models.Test() { Number = , Title = "title3" };
response = await client.PostAsJsonAsync("api/test", testEntity);
if (response.IsSuccessStatusCode)
{
Uri testEntityUrl = response.Headers.Location; // Put
response = await client.GetAsync(testEntityUrl);
testEntity = await response.Content.ReadAsAsync<Test.EntityFramework.Models.Test>();
testEntity.Title = "title3...";
response = await client.PutAsJsonAsync(testEntityUrl, testEntity); // Delete
response = await client.DeleteAsync(testEntityUrl);
}
}
}
public static async void TestUnblock()
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:55165/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync("api/test"); // Blocking call // Get
if (response.IsSuccessStatusCode)
{
// Parse the response body. Blocking!
var products = await response.Content.ReadAsAsync<IEnumerable<Test.EntityFramework.Models.Test>>();
foreach (var p in products)
{
Console.WriteLine("{0}\t{1};", p.ID, p.Title);
}
}
else
{
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
} }
}
}
}