データを取得するために3番目のサイドWebサービスクライアント(「サービス参照の追加」を使用して作成)を使用しています。オブジェクトを文字列 xmlにヘッダーでシリアル化する方法
適切なデータを使用してWebサービスオブジェクトを充填した後、我々は(暗号化されたパスワードと他のいくつかの定義済みのデータ)ヘッダにいくつかのデータを追加する必要が
その後、我々が使用して、Webサービスに送信されたすべての要求をシリアル化しています標準.net XmlSerializer
。
ただし、シリアル化の結果、リクエストのヘッダーが表示されません。私は長い間検索しており、それらを「印刷」する方法を見つけることができませんでした。ここで
は、いくつかのサンプルコードです:Ibooking proxy = new BookingManager();
/* Init proxy Data...*/
GetAvailabilityRequest request = new GetAvailabilityRequest();
/*Fill more data on the request...*/
GetAvailabilityResponse response = proxy.GetAvailability(request); //Send request to the web service
var xmlString2 = response.Serialize(); //only body, no headers in the XML
/* Extension class to Serialize any object */
public static class ExtensionUtil
{
public static string Serialize<T>(this T value)
{
try
{
XmlSerializer xmlserializer = new XmlSerializer(typeof(T));
var stringWriter = new StringWriter();
using (var writer = XmlWriter.Create(stringWriter))
{
xmlserializer.Serialize(writer, value);
return stringWriter.ToString();
}
}
catch (Exception ex)
{
throw new Exception("An error occurred", ex);
}
}
}
私はそれは長くて複雑なので、要求に、より多くのデータを追加するコードを除外してきました(私たちの前IEndpointBehavior
とIClientMessageInspector
に「キャッチ」要求を実装する必要がありますそれを送信する) - しかし、現時点では回避策として、私はメッセージオブジェクトにBreakPointを置き、Visual Studioを使用して文字列に変換します。このようにしてヘッダーが見えますが、シリアル化では自動化したいので、これは悪い習慣です。
リクエストまたはレスポンスにヘッダーを表示しますか? – sachin
リクエストはもっと重要ですが、結局私はそれらを両方ともシリアル化しています(リクエストとレスポンスXMLが作成されています)。私は両方のヘッダを見る機能を望みます – Dardar
何が起こっているのか分かりません。しかし、XmlSerializerが迷惑メールであることがわかります。 NetDataContractSerializerを使用して、シリアル化されるクラスがDataContractでマークアップされ、シリアル化されるプロパティがDataMember属性でマークアップされていることを確認します。情報については – Will