Показать сообщение отдельно
Старый 15.09.2020, 13:58   #8  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
В итоге сделал с помощью System.Net.HttpWebRequest и System.Net.HttpWebResponse:

'url_address' - адрес сервиса dadata, к которому обращаемся,
'queryTxt' - текст запроса, который отправляем,
responseData - ответ сервиса.

Может, кому пригодится

X++:
    System.Net.HttpWebRequest               webRequest;
    System.Net.HttpWebResponse              webResponse;

    System.Exception                        ex;
    System.Exception                        webException;

    System.IO.Stream                        stream;
    System.IO.StreamReader                  streamReader;
    System.Byte[]                           bytes;

    System.Net.WebHeaderCollection          headers;
    str                                     responseData;
    System.Text.UTF8Encoding                encoding;
    ;

        new InteropPermission(InteropKind::ClrInterop).assert();

        webRequest = System.Net.WebRequest::Create('url_address') as  System.Net.HttpWebRequest;

        //Создаём коллекцию заголовков и задаём реквизиты доступа
        headers = new System.Net.WebHeaderCollection();

        //api ключ
        headers.Add("Authorization: Token " + apiKey);

        //секретный ключ
        headers.Add("X-Secret: " + secretKey);

        //устанавливаем параметры запроса
        webRequest.set_Headers(headers);
        webRequest.set_Method('POST');
        webRequest.set_ContentType('application/json');
        webRequest.set_Accept('application/json');
        webRequest.set_Timeout(10000);

        //указываем кодировку запроса
        encoding    = new System.Text.UTF8Encoding();
        bytes       = encoding.GetBytes('queryTxt');

        webRequest.set_ContentLength(bytes.get_Length());

        stream = webRequest.GetRequestStream();
        stream.Write(bytes, 0, bytes.get_Length());
        stream.Close();

        webResponse         = webRequest.GetResponse();

        stream                    = webResponse.GetResponseStream();
        streamReader        = new System.IO.StreamReader(stream);
        responseData        = streamReader.ReadToEnd();

        streamReader.Close();
        stream.Close();

        CodeAccessPermission::revertAssert();
За это сообщение автора поблагодарили: vitart (1), alicedr (1).