使用C#调用相同代码的所有类型的Web服务?

时间:2015-10-14 14:37:20

标签: c# web-services

我想询问一个情况。我们考虑使用不同的技术编写相同的Web服务。例如web api web服务,.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); 

编辑:所有网络服务都有相同的方法和属性

1 个答案:

答案 0 :(得分:1)

如果您的soap服务与wsdl完全相同,但使用不同的技术创建,您可以使用一个代码安静地调用它们。此外,您可以使用任何技术来创建客户端,可以使用soap服务。如果这些服务不是soap服务,那么如果所有服务都在等待相同的xml数据,那么您已经可以使用单一代码和代码来处理它们。在这种情况下,您可以使用HttpClient类向它们发送请求。此外,HttpClient是更通用的方式来调用任何http端点独立于其内部技术,但它需要更多的工作,使其工作,然后其他。