none
GET Request C# помогите плиз. RRS feed

  • Вопрос

  • Есть у меня небольшая программа, которая по ИНН тянет с веб-сервиса данны. Веб-сервис работает с помощью GET запроса, данные отдает  json либо xsd схеме. 

    XSD Схема

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:complexType name="ArrayOfreq">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="req" nillable="true" type="req"/>
    </xs:sequence>
    </xs:complexType>
    <xs:element name="ArrayOfreq" nillable="true" type="ArrayOfreq"/>
    <xs:complexType name="req">
    <xs:sequence>
    <xs:element minOccurs="0" name="inn" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="ogrn" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="focusHref" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="UL" nillable="true" type="UL"/>
    <xs:element minOccurs="0" name="IP" nillable="true" type="IP"/>
    <xs:element minOccurs="0" name="briefReport" nillable="true" type="briefReportData"/>
    <xs:element minOccurs="0" name="contactPhones" nillable="true" type="contactPhones"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="UL">
    <xs:sequence>
    <xs:element minOccurs="0" name="kpp" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okpo" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okato" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okfs" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="oktmo" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okogu" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okopf" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="opf" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="legalName" nillable="true" type="legalName"/>
    <xs:element minOccurs="0" name="legalAddress" nillable="true" type="legalAddress"/>
    <xs:element minOccurs="0" name="branches" nillable="true" type="ArrayOfbranch"/>
    <xs:element minOccurs="0" name="status" nillable="true" type="status"/>
    <xs:element minOccurs="0" name="registrationDate" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="dissolutionDate" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="heads" nillable="true" type="ArrayOfhead"/>
    <xs:element minOccurs="0" name="managementCompanies" nillable="true" type="ArrayOfmanagementCompany"/>
    <xs:element minOccurs="0" name="history" nillable="true" type="history"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="legalName">
    <xs:sequence>
    <xs:element minOccurs="0" name="short" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="full" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="date" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="legalAddress">
    <xs:sequence>
    <xs:element minOccurs="0" name="parsedAddressRF" nillable="true" type="parsedAddressRF"/>
    <xs:element minOccurs="0" name="date" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="parsedAddressRF">
    <xs:sequence>
    <xs:element minOccurs="0" name="zipCode" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="regionCode" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="regionName" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="district" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="city" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="settlement" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="street" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="house" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="bulk" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="flat" nillable="true" type="toponym"/>
    <xs:element minOccurs="0" name="kladrCode" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="toponym">
    <xs:sequence>
    <xs:element minOccurs="0" name="topoShortName" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="topoFullName" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="topoValue" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ArrayOfbranch">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="branch" nillable="true" type="branch"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="branch">
    <xs:sequence>
    <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="parsedAddressRF" nillable="true" type="parsedAddressRF"/>
    <xs:element minOccurs="0" name="foreignAddress" nillable="true" type="foreignAddr"/>
    <xs:element minOccurs="0" name="date" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="foreignAddr">
    <xs:sequence>
    <xs:element minOccurs="0" name="countryName" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="addressString" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="status">
    <xs:sequence>
    <xs:element minOccurs="0" name="statusString" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="reorganizing" type="xs:boolean"/>
    <xs:element minOccurs="0" name="dissolving" type="xs:boolean"/>
    <xs:element minOccurs="0" name="dissolved" type="xs:boolean"/>
    <xs:element minOccurs="0" name="date" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ArrayOfhead">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="head" nillable="true" type="head"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="head">
    <xs:sequence>
    <xs:element minOccurs="0" name="fio" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="innfl" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="position" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="date" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ArrayOfmanagementCompany">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="managementCompany" nillable="true" type="managementCompany"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="managementCompany">
    <xs:sequence>
    <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="inn" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="ogrn" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="date" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="history">
    <xs:sequence>
    <xs:element minOccurs="0" name="kpps" nillable="true" type="ArrayOfkppWithDate"/>
    <xs:element minOccurs="0" name="legalNames" nillable="true" type="ArrayOflegalName"/>
    <xs:element minOccurs="0" name="legalAddresses" nillable="true" type="ArrayOflegalAddress"/>
    <xs:element minOccurs="0" name="branches" nillable="true" type="ArrayOfbranch"/>
    <xs:element minOccurs="0" name="managementCompanies" nillable="true" type="ArrayOfmanagementCompany"/>
    <xs:element minOccurs="0" name="heads" nillable="true" type="ArrayOfhead"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ArrayOfkppWithDate">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="kppWithDate" nillable="true" type="kppWithDate"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="kppWithDate">
    <xs:sequence>
    <xs:element minOccurs="0" name="kpp" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="date" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ArrayOflegalName">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="legalName" nillable="true" type="legalName"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ArrayOflegalAddress">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="legalAddress" nillable="true" type="legalAddress"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="IP">
    <xs:sequence>
    <xs:element minOccurs="0" name="fio" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okpo" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okato" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okfs" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okogu" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="okopf" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="opf" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="oktmo" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="registrationDate" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="dissolutionDate" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="status" nillable="true" type="status"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="briefReportData">
    <xs:sequence>
    <xs:element minOccurs="0" name="summary" nillable="true" type="briefReportSummary"/>
    <xs:element minOccurs="0" name="href" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="briefReportSummary">
    <xs:sequence>
    <xs:element minOccurs="0" name="greenStatements" type="xs:boolean"/>
    <xs:element minOccurs="0" name="yellowStatements" type="xs:boolean"/>
    <xs:element minOccurs="0" name="redStatements" type="xs:boolean"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="contactPhones">
    <xs:sequence>
    <xs:element minOccurs="0" name="count" type="xs:int"/>
    <xs:element minOccurs="0" name="phones" nillable="true" type="ArrayOfstring"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ArrayOfstring">
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:schema>
    Эту схему с помощью xsd.exel преобразовал в классы C#. Дальше написал следующее

    WebRequest request = WebRequest.Create("https://focus-api.kontur.ru/api3/briefReport?key=72ea9a0af42c2392403b1875b3f7edf0fe1da18381&inn=632209263120&xml");
                ArrayOfreq BR = new ArrayOfreq();
                XmlSerializer serializer = new XmlSerializer(typeof(ArrayOfreq));
                using (Stream stream = request.GetResponse().GetResponseStream())
                {
                    BR = (ArrayOfreq)serializer.Deserialize(stream);
                }
    
    var resp = BR.req.

    var resp = BR.req. - после этого должны добавляться параметры, которые я должен получить. Но там пустота. соответственно я что-то делаю не так, не пойму только что. Прошу помощи.

    21 июня 2017 г. 14:40

Ответы

  • GET запросы хороши тем, что результаты можно просмотреть в браузере.

    Вот ваша ссылка GET запроса: "https://focus-api.kontur.ru/api3/briefReport?key=72ea9a0af42c2392403b1875b3f7edf0fe1da18381&inn=632209263120&xml"

    Она возвращает значение: "No valid key specified"...

    У Вас не правильно задан параметр key.

    21 июня 2017 г. 15:11
  • Так он я думаю специально фальшивый ключ написал просто для демонстрации. Этот API же только для клиентов Контура, и ключ выкладывать в открытую нельзя.

    По теме, ArrayOfreq определен как последовательность элементов req. Интуиция подсказывает, что при использовании нужно использовать оператор индексирования: var inn = BR[0].inn;

    • Помечено в качестве ответа AndreySV 8 августа 2017 г. 11:52
    21 июня 2017 г. 18:22

Все ответы

  • GET запросы хороши тем, что результаты можно просмотреть в браузере.

    Вот ваша ссылка GET запроса: "https://focus-api.kontur.ru/api3/briefReport?key=72ea9a0af42c2392403b1875b3f7edf0fe1da18381&inn=632209263120&xml"

    Она возвращает значение: "No valid key specified"...

    У Вас не правильно задан параметр key.

    21 июня 2017 г. 15:11
  • Так он я думаю специально фальшивый ключ написал просто для демонстрации. Этот API же только для клиентов Контура, и ключ выкладывать в открытую нельзя.

    По теме, ArrayOfreq определен как последовательность элементов req. Интуиция подсказывает, что при использовании нужно использовать оператор индексирования: var inn = BR[0].inn;

    • Помечено в качестве ответа AndreySV 8 августа 2017 г. 11:52
    21 июня 2017 г. 18:22
  • Так он я думаю специально фальшивый ключ написал просто для демонстрации. Этот API же только для клиентов Контура, и ключ выкладывать в открытую нельзя.

    Хотел бы подделать ключ дал бы такую ссылку https://focus-api.kontur.ru/api3/briefReport?key=3208d29d15c507395db770d0e65f3711e40374df&inn=6663003127&xml

    По мне так json компактней и классы получить проще)))

    21 июня 2017 г. 19:12
  • Ключ не подделанный)))Он просто устаревший, это демо ключ. В итоге получилось сделать. Надо было просто преобразовать xml в классы, а потом сделать вот так как сказал @VadimTagil. По теме, ArrayOfreq определен как последовательность элементов req. Интуиция подсказывает, что при использовании нужно использовать оператор индексирования: var inn = BR[0].inn;
    8 августа 2017 г. 11:52