zoukankan      html  css  js  c++  java
  • asp.net web api 服务原生调用

    [TestClass]
     
    publicclassSampleTests
     
    {
       
    privateHttpSelfHostServer server =null;
       
    privatestring baseAddress =null;

        
    //Use TestInitialize to run code before running each test
       
    [TestInitialize()]
       
    publicvoidMyTestInitialize()
       
    {
          baseAddress
    =string.Format("http://{0}:9090",Environment.MachineName);

         
    HttpSelfHostConfiguration config =newHttpSelfHostConfiguration(this.baseAddress);
          config
    .Routes.MapHttpRoute("API Default","api/{controller}/{id}",new{ id =RouteParameter.Optional});

          server
    =newHttpSelfHostServer(config);
          server
    .OpenAsync().Wait();
       
    }
        
        
    //Use TestCleanup to run code after each test has run
       
    [TestCleanup()]
       
    publicvoidMyTestCleanup()
       
    {
         
    if(server !=null)
         
    {
              server
    .CloseAsync().Wait();
         
    }
       
    }

       
    [TestMethod]
       
    publicvoidGetTest()
       
    {
         
    string expectedResponse ="{'ID':1,'Name':'Saved Item'}".Replace("'","\"");

         
    HttpClient httpClient =newHttpClient();

         
    HttpRequestMessage request =newHttpRequestMessage();
          request
    .RequestUri=newUri(this.baseAddress +"/api/SampleItems/");
          request
    .Headers.Accept.Add(newMediaTypeWithQualityHeaderValue("application/json"));
          request
    .Method=HttpMethod.Get;

         
    HttpResponseMessage response = httpClient.SendAsync(request).Result;

         
    Assert.IsNotNull(response.Content);
         
    Assert.IsNotNull(response.Content.Headers.ContentType);
         
    Assert.AreEqual<string>("application/json", response.Content.Headers.ContentType.MediaType);
         
    Assert.AreEqual<string>(expectedResponse, response.Content.ReadAsStringAsync().Result);
       
    }

       
    [TestMethod]
       
    publicvoidPostAsString()
       
    {
         
    string expectedResponse ="{'ID':2,'Name':'New Item'}".Replace("'","\"");

         
    HttpClient httpClient =newHttpClient();

         
    string msgContent ="{'Name':'New Item'}".Replace("'","\"");

         
    HttpRequestMessage<string> request =newHttpRequestMessage<string>(msgContent,newMediaTypeHeaderValue("application/json"));
          request
    .RequestUri=newUri(this.baseAddress +"/api/SampleItems/");
          request
    .Headers.Accept.Add(newMediaTypeWithQualityHeaderValue("application/json"));
          request
    .Method=HttpMethod.Post;

         
    HttpResponseMessage response = httpClient.SendAsync(request).Result;

         
    Assert.IsNotNull(response.Content);
         
    Assert.IsNotNull(response.Content.Headers.ContentType);
         
    Assert.AreEqual<string>("application/json", response.Content.Headers.ContentType.MediaType);
         
    Assert.AreEqual<string>(expectedResponse, response.Content.ReadAsStringAsync().Result);
       
    }

       
    [TestMethod]
       
    publicvoidPostAsClass()
       
    {
         
    string expectedResponse ="{'ID':2,'Name':'New Item'}".Replace("'","\"");

         
    HttpClient httpClient =newHttpClient();

         
    SampleItem msgContent =newSampleItem{Name="New Item"};

         
    HttpRequestMessage<SampleItem> request =newHttpRequestMessage<SampleItem>(msgContent,newMediaTypeHeaderValue("application/json"));
          request
    .RequestUri=newUri(this.baseAddress +"/api/SampleItems/");
          request
    .Headers.Accept.Add(newMediaTypeWithQualityHeaderValue("application/json"));
          request
    .Method=HttpMethod.Post;

         
    HttpResponseMessage response = httpClient.SendAsync(request).Result;

         
    Assert.IsNotNull(response.Content);
         
    Assert.IsNotNull(response.Content.Headers.ContentType);
         
    Assert.AreEqual<string>("application/json", response.Content.Headers.ContentType.MediaType);
         
    Assert.AreEqual<string>(expectedResponse, response.Content.ReadAsStringAsync().Result);
       
    }


     
    }

     
    publicclassSampleItemsController:ApiController
     
    {
       
    publicSampleItemPost(SampleItem newItem)
       
    {
          newItem
    .ID =2;
         
    return newItem;
       
    }

       
    publicSampleItemGet()
       
    {
         
    returnnewSampleItem
                  
    {
                     ID
    =1,
                    
    Name="Saved Item"
                  
    };
       
    }
     
    }

     
    publicclassSampleItem
     
    {
       
    publicint ID {get;set;}
       
    publicstringName{get;set;}
     
    }

  • 相关阅读:
    centos6 LVS-DR模式---分析
    centos6.6 安装 LXC
    Amoeba-mysql读写分离实战
    keepalived +mysql 实战
    nginx添加sticky模块-cookie保持会话
    haproxy转发真实IP给web
    Mysql-如何正确的使用索引以及索引的原理
    Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
    Mysql-常用数据的基本操作和基本形式
    Mysql-多表连接的操作和用法
  • 原文地址:https://www.cnblogs.com/fx2008/p/2817513.html
Copyright © 2011-2022 走看看