ユーザー(「ユーザーA」)がSOAPを使用して独自のWebサービス接続を設定できるASP.NETアプリケーションでは、キーに基づいた配列からSOAPメッセージへの値の挿入
//Formatted for Clarity
string soapMessage =
"<soap: Envelope //StandardStuff>
<soap:Header //StandardStuff>
<wsse:UsernameToken>
<wsse: Username>{F1}</wsse:Username>
<wsse: Password Type''>{F2}</wsse:Password>
</wsse:UsernameToken>
</soap:Header>
<soap:Body>
<ref:GetStuff>
<ref:IsActive>{F3}</ref:IsActive>
</ref:GetStuff>
</soap:Body>
</soap:Envelope>"
このような小さなものになります、私はデータの配列を送信し、「ユーザB」は、JSONとJavaScriptから受け継が同時に::、例えば、これらの線に沿って何かすることができ
[
{
key: "F1",
value: "A"
},
{
key: "F2",
value: "B"
},
{
key: "F3",
value: "C"
}
];
この配列は、逆シリアル化される前に文字列として入ります(dynamic JsonObject = JsonConvert.DeserializeObject(stringifiedJson);
)。
これで、対応する値をエンベロープに挿入することができます。おそらく、配列に奇妙な値を挿入することによって人々がファンキーなことをすることを許さない程度のセキュリティが確保されたいと思います。私の最後の手段)。
これまでのところ、私は({0}, {1} & {2}
に置き換えられてSOAPメッセージに{}
年代で)そうのような文字列を構築する概念を知ってる:
string value1 = "A";
string value2 = "B";
string value3 = "C";
var body = string.Format(@soapMessage, value1, value2, value3);
request.ContentType = "application/soap+xml; charset=utf-8";
request.ContentLength = body.Length;
request.Accept = "text/xml";
request.GetRequestStream().Write(Encoding.UTF8.GetBytes(body), 0, body.Length);
しかし、この配列内の値の量ユーザーの入力や参照の順序の変更に応じて変更される可能性があるため、より柔軟なものが必要です。私はSOAP呼び出しを行うのがとても新しいので、できるだけ愚かな答えが得られるでしょう。
'nustache'(https://github.com/jdiamond/Nustache)や' handlebars.net'(https://github.com/rexm/Handlebars.Net)のような既存のテンプレートエンジンを評価しましたか? –
私はこのプロジェクトに新しい図書館を追加する自由がないので、私はしていません。これらが必要でないようなオプションは、好みを持つでしょう。 – Patrick