none
Добавление заголовка в soap запрос. RRS feed

  • Вопрос

  • На основание wsdl документа сгенерирован прокси класс (через add reference). Но для выполнения запроса необходимо в запрос включить дополнительный заголовок. Как это можно сделать?
    10 февраля 2015 г. 9:36

Ответы

Все ответы

  • Добрый день.

    Выбираете Service Reference в Solution Explorer, нажимаете Show All Files и правите код. При перегенерации правки придется вносить повторно...

    10 февраля 2015 г. 11:26
    Отвечающий
  • Например, так.

    P.s. Ставьте четче задачу. Ну и да, посмотрите дальше, что там в методах вызываемых в продемонстрированном вами примере.

    • Помечено в качестве ответа YatajgaEditor 19 февраля 2015 г. 17:58
    10 февраля 2015 г. 13:47
    Отвечающий
  • Я  пробую идти не много по другому пути

    добавил элемент в файл wsdl

    <?xml version="1.0" encoding="UTF-8"?>
    <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://api-beta.reformagkh.ru/api_document_literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" name="ApiSoap" targetNamespace="http://api-beta.reformagkh.ru/api_document_literal">
    <types>
    <xsd:schema targetNamespace="http://api-beta.reformagkh.ru/api_document_literal">
    <xsd:element name="Header">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="authenticate" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>

    <xsd:element name="Login">

    ну и прописал ссылку на заголовок дальше

    в итоге  имеем не совсем правильный запрос, но в целом хоть какой-то результат.

    этот рисунок сделан из 

    Wireshark

    т.е. текст выдран из анализа сетевого траффика

    осталось просто правильно описать этот ключ.

    В документации он выглядит так

    <soapenv:Header> <authenticate xsi:type="xsd:string">r3r3ct27sala7p283h4btkpe75</authenticate>

      </soapenv:Header> <soapenv:Body>

    Просто это самое первое что попробовал.

    По крайней мере прокси класс генерится автоматически....



    • Изменено Sergej_VB 25 февраля 2015 г. 20:02
    25 февраля 2015 г. 20:00
  • http://www.codeproject.com/Articles/11283/Extract-raw-SOAP-Message-returned-from-Foreign-Web

    скорее всего это всем поможет.

    26 февраля 2015 г. 8:20
  • тоже к этому пришел только отсюда https://msdn.microsoft.com/ru-ru/library/7w06t139%28v=vs.100%29.aspx

    26 февраля 2015 г. 8:24
  • Всем спасибо решение найдено. Тема закрыта.
    • Помечено в качестве ответа AV.Ivanov 26 февраля 2015 г. 18:59
    26 февраля 2015 г. 18:59
  • Непонятно какое решение использовал.

    Возможно ли Вам дать ссылку на него?

    Вопрос:

    Обязан ли поставщик сервиса описать Header

    в файле WSDL?

    Судя по приказу

    МИНИСТЕРСТВО СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ от 27 декабря 2010 г. N 190 

    Министерство опирается на международные стандарты в описании

    http://www.w3.org/TR/soap/

    http://www.ws-i.org/Profiles/SimpleSoapBindingProfile-1.0.html

    должны.

    Кто нибудь сталкивался?

    С заголовком у меня все получилось, но вопрос в том, что полученный xml не соответствует стандартам. Да и криво это как-то.

    • Изменено Sergej_VB 3 марта 2015 г. 12:59
    3 марта 2015 г. 12:58
  • а вы с каким сервисом пытаетесь работать?
    3 марта 2015 г. 13:26
  • Ссылку на решение я дал выше. WSDL документ загрузил без изменений и все классы которые использовал (сгенерированные студией) работают.
    4 марта 2015 г. 10:00