c#使用refit對接webservice接口

c#使用refit對接webservice接口

群友說.net core無法對接webservice,站長找了些資料,希望能幫助到他

最后更新 2023/3/15 下午8:33
沙漠尽头的狼
预计阅读 2 分钟
分类
.NET
标签
.NET C# Refit WebService

refit 是一款強大的類型安全的 restful http 客戶端庫,它能夠幫助我們輕鬆地與 web api 進行通信。不過在本問題中,我們需要使用 refit 與 web service 進行通信,因此需要對 refit 進行一些特定的配置。

下面是一個使用 refit 調用 web service 接口的示例:

  1. 首先,需要在項目中添加 refit 庫的引用,可以通過 nuget 包管理器搜索 refit 並安裝。

  2. 然後,我們需要定義一個接口來描述 web service 接口,例如:

public interface IMyWebService
{
    [Post("/MyWebService.asmx")]
    Task<string> MyWebServiceMethod(string param1, string param2);
}

其中 [Post] 指定了调用的 HTTP 方法和 URL,Task<string> 是方法返回类型。

  1. 接下来,我们需要使用 Refit 的 RestService.For 方法创建一个客户端实例:
var client = RestService.For<IMyWebService>("http://example.com");

其中 "http://example.com" 是 Web Service 的地址。

  1. 最後,我們就可以使用客戶端實例來調用 web service 接口了:
var result = await client.MyWebServiceMethod("param1", "param2");

其中 result 是 Web Service 方法的返回值。

需要注意的是,由于 Web Service 接口不是基于 RESTful 架构的,因此需要进行一些特定的配置。例如,在接口定义中使用 [Post] 指定调用的 HTTP 方法为 POST,同时需要将 Web Service 方法的名称作为 URL 的一部分,例如:

public interface IMyWebService
{
    [Post("/MyWebService.asmx/MyWebServiceMethod")]
    Task<string> MyWebServiceMethod(string param1, string param2);
}

另外,需要在客戶端實例中指定 web service 的 soap 1.1 命名空間,例如:

var client = RestService.For<IMyWebService>("http://example.com", new RefitSettings
{
    UrlParameterFormatter = new SoapUrlParameterFormatter(),
    ContentSerializer = new XmlContentSerializer(new RefitXmlSerializerSettings
    {
        Namespace = "http://schemas.xmlsoap.org/soap/envelope/",
        UseXmlSerializerFormat = true
    })
});

在这里,我们使用了 SoapUrlParameterFormatter 来处理 URL 中的参数,使用了 XmlContentSerializerRefitXmlSerializerSettings 来处理请求和响应的 XML 数据。

總之,使用 refit 調用 web service 接口需要進行一些特定的配置,但是只要按照上述示例進行操作,就可以輕鬆地完成對接。

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/2/7

aot使用經驗總結

從項目創建伊始,就應養成良好的習慣,即只要添加了新功能或使用了較新的語法,就及時進行 aot 發布測試。

继续阅读