1

こんにちは、政府の WCF サービスを使用しています。古い方法では、このように SOAP ヘッダーを調べています。

<islemKodu>2</islemKodu>
<islemNedeni>Döküman iptal edildi</islemNedeni>

これに MessageInspector を追加します。

public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {
request.Headers.Add(MessageHeader.CreateHeader("islemKodu", "", "2"));
request.Headers.Add(MessageHeader.CreateHeader("islemNedeni", "", "Döküman iptal edildi"));
return null;
}

これは正しく機能しています。

しかし、政府は石鹸のヘッダーをこのように変更しました。

<param:SaglikNetParameters xmlns:param="http://saglik-net.saglik.gov.tr/parametreler/">
<param:parameter name="islemKodu">2</param:parameter>
<param:parameter name="islemNedeni">Döküman iptal edildi</param:parameter>
</param:SaglikNetParameters>

では、BeforeSendRequest メソッドを変更して、soap ヘッダーのこのカスタム パラメータのように送信するにはどうすればよいでしょうか

4

1 に答える 1

2

必要な構造に一致する SOAP XML を出力するには、特別なヘッダー クラスを作成する必要があります。実装する必要があるコードについては、このブログ投稿を参照してください。

基本的に、必要な XML を出力するクラスを作成し、そのクラスを次のように使用する必要があります。

// %< snipped >%

var specialHeader = GovMsgHeader.CreateHeader( /* any parameters */ );
request.Headers.Add(specialHeader);

// %< snipped >%

特別なクラスは次のようになります。

public class GovMsgHeader : MessageHeader {
    protected override void OnWriteStartHeader(
        System.Xml.XmlDictionaryWriter writer,
        MessageVersion messageVersion) {

        base.OnWriteStartHeader(writer, messageVersion);

        // Write your custom XML using the XmlDictionaryClass:
        //TODO: add the 'param' XML namespace to the writer...
        //TODO: add the container element with something like this:
        writer.WriteElementString("SaglikNetParameters", "param", "");

        writer.WriteElementString("parameter", "param", "2");
        writer.WriteAttributeString("name", "", "islemKodu");
        //TODO: complete the rest of the XML ...
    }
}
于 2013-04-10T17:46:39.547 に答える