用c#用相同的代码调用所有类型的web服务
本文关键字:类型 服务 web 代码 调用 | 更新日期: 2023-09-27 18:17:52
我想问一个情况。我们考虑用不同的技术编写相同的web服务。例如web api web service。Asmx web服务、wcf web服务、Java XML web服务……等。通常,如果我想调用这个web服务,我应该编写不同的代码。是否可以用相同的代码调用这类技术服务?我该怎么办?下面的代码是一个虚拟代码来调用不同类型的技术服务。
//calling web api web service
client.BaseAddress = new Uri("http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
HttpResponseMessage response = await client.GetAsync("api/products/1");
if (response.IsSuccessStatusCode)
{
Product product = await response.Content.ReadAsAsync>Product>();
Console.WriteLine("{0}'t${1}'t{2}", product.Name, product.Price, product.Category);
}
//calling asmx web service
localhost.WebService client = new localhost.WebService();
client.Products(1);
编辑:所有的web服务有相同的方法和属性
如果您有具有完全相同wsdl的soap服务,但是使用不同的技术创建,那么您可以使用一段代码调用它们。此外,您可以使用任何技术来创建可以与soap服务一起工作的客户机。如果这些服务不是soap服务,如果它们都在等待相同的xml数据,那么您已经可以使用单一的代码来处理它们。在这种情况下,您可以使用HttpClient
类向它们发送请求。此外,HttpClient
是独立于其内部技术调用任何http端点的更通用的方式,但它需要更多的工作才能使其工作。