asp.net web api 服务原生调用
2012-12-14 09:47
706 查看
[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;}
}
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;}
}
相关文章推荐
- MVC项目实践,在三层架构下实现SportsStore-09,ASP.NET MVC调用ASP.NET Web API的查询服务
- 通过HttpClient 调用ASP.NET Web API
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)
- PHP 调用asp.net Web Services服务问题总结
- 【ASP.NET Web API教程】3.2 通过.NET客户端调用Web API(C#)
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】
- 如何使用来自 ASP.NET 的客户端证书调用 Web 服务
- ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API
- ASP.NET异步调用Web服务
- [转]使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性
- 如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?
- ASP.NET Web服务调用发生错误,错误代码404
- 使用ASP.NET web API创建REST服务(二)
- 在ASP.NET MVC Web API中使用Apworks开发第一个HTTP服务
- ASP.NET WEB API的服务托管(Self-HOST)
- Fiddler捕捉ASP.NET WebSite调用WebService、WCF服务
- asp.net web api的自托管模式HttpSelfHostServer可以以控制台程序或windows服务程序为宿主,不单单依赖于IIS web服务器
- asp.net web api rest风格与RPC风格调用
- 【转】争用、 性能差、 和死锁时使从 ASP.NET 应用程序与 Web 服务的调用