C#でRefitを使ってWebServiceインターフェースを連携する

C#でRefitを使ってWebServiceインターフェースを連携する

コミュニティメンバーが.NET CoreではWebServiceと連携できないと言っていたので、サイト運営者がいくつかの資料を探しました。彼の助けになれば幸いです。

最終更新 2023/03/15 20: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 インターフェースを呼び出すにはいくつか特定の設定が必要ですが、上記の例に従えば簡単に接続できます。

さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2026/04/22

各OSバージョンの.NETサポート状況(250707更新)

仮想マシンとテストマシンを使用して、各OSバージョンの.NETサポート状況を確認します。OSインストール後、対応するランタイムをインストールし、Stardustエージェントを実行できることを確認します(合格条件)。

続きを読む
同じカテゴリ / 同じタグ 2026/02/07

AOTの使用経験のまとめ

プロジェクト作成当初から、新機能を追加したり新しい構文を使用したりした場合には、すぐにAOT公開テストを実施するという良い習慣を身につけるべきです。

続きを読む