用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服务有相同的方法和属性

用c#用相同的代码调用所有类型的web服务

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