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;}
     
    }

  • 相关阅读:
    高效的团队必须坚持反馈制度
    项目管理式生活
    用PDCA让工作效率步步高升
    PHP函数:fsockopen简介
    php的getallheaders函数在nginx下失效的解决办法
    getallheaders函数使用方法
    PHP中getenv函数
    PHP获取http请求的头信息实现步骤
    php下获取http状态的实现代码
    PHP获取客户端和服务器端IP
  • 原文地址:https://www.cnblogs.com/fx2008/p/2817513.html
Copyright © 2011-2022 走看看