zoukankan      html  css  js  c++  java
  • 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}	{1};", p.ID, p.Title);
                        }
                    }
                    else
                    {
                        Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
                    }
    
                    // Post
                    var testEntity = new Test.EntityFramework.Models.Test() { Number = 3, 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}	{1};", p.ID, p.Title);
                        }
                    }
                    else
                    {
                        Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
                    }
    
                }
            }
        }
    }
  • 相关阅读:
    Opengl编程指南第三章:视图
    OpenGL编程指南第四章:颜色
    OpenGL编程指南第七章:显示列表
    推荐:字体、排版简明入门
    OpenGL编程指南第八章:绘制像素、位图、字体和图像
    推荐:字体、排版简明入门
    OpenGL编程指南第五章:光照
    转载一篇密码学基本介绍
    ARM_异常和中断学习笔记
    ARM指令学习笔记
  • 原文地址:https://www.cnblogs.com/LeimOO/p/3627433.html
Copyright © 2011-2022 走看看