Захват SOAP-конверта (C # WinForm вызывает службу внешнего поставщика .ASMX) - PullRequest
0 голосов
/ 01 апреля 2010

Я звоню на внешний веб-сервис SSL стороннего поставщика из клиента .NET 3.5 (WinForm). Поставщик попросил меня отправить им заголовок мыла, чтобы проверить, почему что-то не работает.

Я использовал WireShark для захвата пакетов, но так как веб-сервис SSL, пакеты зашифрованы.

Есть ли несколько магических строк кода, которые нужно добавить в мой клиент C # для сохранения или отображения Soap Envelope либо непосредственно перед тем, как я вызову их web / метод, либо сразу после?

Ответы [ 3 ]

1 голос
/ 01 апреля 2010

В .NET 2.0 я использовал Web Service Extensions 3.0 и реализовал PolicyAssertion и SoapFilter. Функция ProcessMessage предоставит вам полный доступ для сохранения / изменения заголовка и тела мыла.

1 голос
/ 01 апреля 2010

Как именно вы получаете доступ к веб-сервису? Вы используете WCF или другой механизм?

Один из способов, который всегда должен работать, - это использовать Fiddler . По сути, он действует как прокси-сервер, перехватывает вызовы между вашим клиентом и веб-службой (или на самом деле любой HTTP-вызов) и затем предоставляет вам содержимое запроса и ответа.

Оттуда вы можете получить конверт SOAP и отправить его поставщику.

Если вы используете WCF, вы можете использовать пользовательское поведение конечной точки для внедрения IClientMessageInspector . Эта реализация будет иметь доступ к экземпляру Message (который является объектным представлением конверта SOAP) и до того, как запрос будет отправлен на сервер (также через реализацию метода BeforeSendRequest )) как после получения ответа (через реализацию метода AfterReceiveReply ).

0 голосов
/ 09 июня 2010
envelope.Save("c:\\filename.xml");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...