これは、SOAP Webサービスを呼び出すためのXMLです。これをC#経由で呼び出すには、C#プロジェクトへのサービス参照として追加できます。
サービスのWSDL(Webサービス定義言語ファイル)へのリンクが必要です。次に、プロジェクトにサービス参照を追加し、次の方法でその機能を簡単に呼び出すことができます。
1-サービスを呼び出すために使用するクライアントを定義します。
MyTestServiceSoapClient client = new MyTestServiceSoapClient();
2-このクライアントのメソッドを次のように呼び出します。
client.calculate_something("test_user", "test_password", "");
またはこれ:
client.calculate_something(new Input_data()
{ code_user = "test_user", password_broker = "test_password", subuser_id = ""}
);
この記事は、C#プロジェクトにサービス参照を追加するのに役立ちます。
リクエストとレスポンスのXMLをインターセプトするには、次の2つのクラスを実装します。
public class InspectorBehavior : IEndpointBehavior
{
public string LastRequestXML {
get
{
return myMessageInspector.LastRequestXML;
}
}
public string LastResponseXML {
get
{
return myMessageInspector.LastResponseXML;
}
}
private MyMessageInspector myMessageInspector = new MyMessageInspector();
public void AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
}
public void Validate(ServiceEndpoint endpoint)
{
}
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.MessageInspectors.Add(myMessageInspector );
}
}
public class MyMessageInspector : IClientMessageInspector
{
public string LastRequestXML { get; private set; }
public string LastResponseXML { get; private set; }
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
LastResponseXML = reply.ToString();
}
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
{
LastRequestXML = request.ToString();
return request;
}
}
次に、呼び出しコードを次のように変更します。
MyTestServiceSoapClient client = new MyTestServiceSoapClient();
var requestInterceptor = new InspectorBehavior();
client.Endpoint.Behaviors.Add(requestInterceptor );
client.calculate_something("test_user", "test_password", "");
string requestXML = requestInterceptor.LastRequestXML;
string responseXML = requestInterceptor.LastResponseXML;
// Now the xml you need is in "requestXML" variable