これは、誰かがおそらく拡張できる簡単な答えです。
WSDL テンプレート アプリ (WSDL.exe) を使用してサービス ラッパーを生成すると、SoapHttpClientProtocol 型のクラスが構築されます。手動でも実行できます。
public class MyService : SoapHttpClientProtocol
{
public MyService(string url)
{
this.Url = url;
// plus set credentials, etc.
}
[SoapDocumentMethod("{service url}", RequestNamespace="{namespace}", ResponseNamespace="{namespace}", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public int MyMethod(string arg1)
{
object[] results = this.Invoke("MyMethod", new object[] { arg1 });
return ((int)(results[0]));
}
}
このコードはテストしていませんが、WSDL ツールを実行しなくてもスタンドアロンで動作するはずです。
私が提供したコードは、リモート呼び出しを介して Web サービスに接続する呼び出し元コードです (何らかの理由で実際にリモートにしたくない場合でも)。 Invoke メソッドは、それをソープコール。実際にクラスを参照できる限り、HTTP経由でWebサービス呼び出しをバイパスしたい場合、@ Dave Wardのコードは正しいです。おそらく、内部型は「MyService」ではありません。確実に知るには、コントロールのコードを調べる必要があります。