Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / HTTPS over T-SQL / 25 сообщений из 35, страница 1 из 2
16.04.2018, 16:17
    #39630935
hollister
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Коллеги, привет. подскажите пожалуйста, как обращаться к ресурсам HTTPS через T-SQL
Пример кода

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
DECLARE @win   INT
DECLARE @hr   INT
DECLARE @text   VARCHAR (MAX)
DECLARE @str   VARCHAR (100)
DECLARE @Result   NVARCHAR (MAX)
DECLARE @result   TABLE (result VARCHAR (MAX))
  
    EXEC @hr=sp_OACreate 'MSXML2.ServerXMLHttp',@win OUT 
    IF @hr <> 0 BEGIN 
		EXEC sp_OAGetErrorInfo @win
		select 2
	END

    EXEC @hr=sp_OAMethod @win, 'Open',NULL,'GET', 'https://api.direct.yandex.com','false'
    IF @hr <> 0 BEGIN 
		EXEC sp_OAGetErrorInfo @win
		select 3 
	END 
  

    EXEC @hr=sp_OAMethod @win,'Send', null
	IF @hr <> 0 BEGIN 
		EXEC sp_OAGetErrorInfo @win
	END 


	SELECT @Result = result FROM @result



выдает ответ
A certificate is required to complete client authentication
Хотя сертификат установлен, открываю на хосте с БД explorer и перехожу по ссылке - все ок.
Так же пытался сделать через WinHttp.WinHttpRequest.5.1, одинаковый результат

В MS SQL какое то свое хранилище сертификатов?
Прошу помочь

Заранее благодарен.
...
Рейтинг: 0 / 0
16.04.2018, 16:22
    #39630941
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
поиск рулит
...
Рейтинг: 0 / 0
16.04.2018, 16:49
    #39630969
hollister
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Проблема именно в том, что с этим сайтом код не работает
https://api.direct.yandex.com

А если взять например какой нибудет https://habrahabr.ru/ или даже https://ya.ru - все ок

Что то странное
...
Рейтинг: 0 / 0
16.04.2018, 16:56
    #39630976
hollister
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Попробуйте у себя рабочий пример

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @obj int, @ret  int, @text varchar(max), @url varchar(max)

select @url = 'https://api.direct.yandex.ru/'

exec @ret = sp_OACreate 'MSXML2.ServerXMLHTTP', @obj out
IF @ret <> 0 exec sp_OAGetErrorInfo @obj

exec @ret = sp_OAMethod @obj, 'Open', null, 'GET', @url, 'false'
if @ret <> 0 exec sp_OAGetErrorInfo @obj


exec @ret = sp_OAMethod @obj, 'setOption', null, 2 ,13056  -- игнорировать сертификат
if @ret <> 0 exec sp_OAGetErrorInfo @obj

EXEC @ret = sp_OAMethod @obj, 'SEND'
if @ret <> 0 exec sp_OAGetErrorInfo @obj

EXEC @ret = sp_OAGetProperty @obj, 'responsetext'
if @ret <> 0 exec sp_OAGetErrorInfo @obj
...
Рейтинг: 0 / 0
16.04.2018, 18:48
    #39631054
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
hollister,

С# еще не освоили?
...
Рейтинг: 0 / 0
17.04.2018, 12:22
    #39631470
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Владислав Колосовhollister,

С# еще не освоили?

а смысл?
...
Рейтинг: 0 / 0
17.04.2018, 16:37
    #39631777
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Ролг Хупин,

очень простой - закрыть "черный ход" в виде OLE автоматизации.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
21.12.2020, 14:40
    #40029754
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Что-то не смог победить подключение к веб-сервису

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
declare @username varchar (200) = 'USER'
declare @password varchar (200) = 'PASS'
declare @obj int
declare @sUrl varchar (200)
declare @response varchar (8000)
declare @hr int
declare @status INT
declare @statusText VARCHAR (200)
declare @source varbinary (max)
declare @auth varchar (max)

SET @source = CONVERT (varbinary (max), @username + ':' + @password) 

set @sUrl = 'https://mycompany.ru/my_soap/?wsdl'

SET @auth = 'BASIC ' + @username + ':' + @password
exec @hr = sp_OACreate 'MSXML2.ServerXMLhttp', @obj out
exec  @hr = sp_OAMethod @obj, 'setRequestHeader', null, 'Authorization', @auth
exec sp_OAMethod @obj, 'setRequestHeader', null, 'Accept', 'application/json'
exec @hr = sp_OAMethod @obj, 'Open', null, 'POST', @sUrl, false

exec sp_OAMethod @obj, 'send', null, @auth
exec sp_OAgetproperty @obj, 'responseText', @response out
exec sp_OAgetproperty @obj, 'status', @status out
exec sp_OAgetproperty @obj, 'StatusText', @statusText out
exec sp_OADestroy @obj
 
select @status [StatusCode], @statusText [StatusText], @response [Respuesta]



Но пишет, что не смог авторизоваться:

StatusCode - 401
StatusText - Unauthorized
Respuesta - NULL

Подскажите, пожалуйста

Через браузер с сервера по RDP запрашивает логин и пароль, после чего показывает XML сервиса

Как понять, почему не авторизовывается ?
Спасибо
...
Рейтинг: 0 / 0
21.12.2020, 17:52
    #40029858
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Двоичник,

так не делают, для взаимодействия с сервисами пишут отдельное приложение-контроллер или, в крайнем случае, CLR функцию.
Это классическая MVC модель.
...
Рейтинг: 0 / 0
22.12.2020, 06:07
    #40030010
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Двоичник
после чего показывает XML сервиса

Это WSDL сервиса. Если бы авторизация на сервисе прошла нормально, то следующим шагом была бы ручная сборка SOAP-разметки для вызова методов, описанных в WSDL, причем для каждого метода разметка своя. А потом получение ответного SOAP, и его разбор. А та же visual studio умеет по WSDL создавать типизированные обёртки для обращения к сервису, и весь хардкор с ручной сборкой и разбором SOAP-пакетов становится не нужным.
Двоичник
Как понять, почему не авторизовывается ?

Ну, например, потому, что при basic-авторизации authorization header формируется в виде строки Basic+кодированный в base64 результат конкатенации (через дветочие с пробелом) имени пользователя и пароля. А здесь перевода результата конкатенации в base64 я нигде не наблюдаю.
...
Рейтинг: 0 / 0
22.12.2020, 07:32
    #40030012
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Сон Веры Павловны
Двоичник
после чего показывает XML сервиса

А та же visual studio умеет по WSDL создавать типизированные обёртки для обращения к сервису, и весь хардкор с ручной сборкой и разбором SOAP-пакетов становится не нужным.


Уморил.
"Написать письмо" сервису раз в сто проще банальным replace-ом по шаблону.
Ну а "разбор SOAP-пакетов" делает либо sqlXmlBulkLoader, либо сам сервер.

Все эти обертки - великое тормозящее зло.
...
Рейтинг: 0 / 0
22.12.2020, 09:15
    #40030024
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
aleks222
"Написать письмо" сервису раз в сто проще банальным replace-ом по шаблону.

Проще чем просто вызвать метод класса с нужными параметрами? Уморил.

aleks222
Все эти обертки - великое тормозящее зло.

Их тормозами можно пренебречь ввиду несоизмеримости задержек самих обёрток, и временем обращения собственно к сервису. В чем состоит остальное "зло"?
...
Рейтинг: 0 / 0
22.12.2020, 10:34
    #40030051
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Пока вы спорили о прекрасном, мне все же удалось авторизоваться на веб-сервисе. Хотя это вероятно и не правильно, в части шифрованной авторизации, но, так как это будет работать строго в Entranet, то этого достаточно

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
declare @postData varchar(255) = 'PostedString'
declare @Object as Int
declare @statusText varchar(255)
declare @status varchar(255)
declare @url varchar(255) = 'https://mycompany.ru/my_soap/?wsdl'
declare @user varchar(64) = 'USER'
declare @pass varchar(64) = 'PASS'
declare @t table (http ntext)

Exec sp_OACreate 'MSXML2.ServerXMLHTTP.3.0', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'post', @url, 'false', @user, @pass;
EXEC sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded; charset=utf-8';
Exec sp_OAMethod @Object, 'send', NULL, @postData;
EXEC sp_OAGetProperty  @Object, 'status', @status OUT
EXEC sp_OAGetProperty  @Object, 'statustext', @statusText OUT
 
insert into @t
Exec sp_OAMethod @Object, 'responseText';

select http, datalength(http) from @t
 
Exec sp_OADestroy @Object;
  
select @status, @statusText



Единственно только я не понял, как отправить посылку @postData

Код: sql
1.
Exec sp_OAMethod @Object, 'send', NULL, @postData;



Основная беда вся в том, что я делаю взаимодействие с вебсервисом впервые в жизни. А вебсервис пишет другой программист. И как оно это всё устроено, для меня пока темное.

Однако в
Код: sql
1.
select http, datalength(http) from @t


Я весьма получаю XML как при обращении по ссылке на сервис браузером.

Внутри XML для меня якобы заготовлена ветка (фрагмент):

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
   <operation name="TEST">
      <soap12bind:operation style="document" soapAction="http://mycompany.ru/my_soap#my_soap:TEST" />
      <input>
        <soap12bind:body use="literal" />
      </input>
      <output>
        <soap12bind:body use="literal" />
      </output>
    </operation>
  </binding>
  <service name="my_soap">
    <port name="my_soapSoap" binding="tns:my_soapSoapBinding">
      <documentation>
        <wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1" />
      </documentation>
      <soapbind:address location="https://mycompany.ru/my_soap" />
    </port>
    <port name="my_soapSoap12" binding="tns:my_soapSoap12Binding">
      <soap12bind:address location="https://mycompany.ru/my_soap/" />
    </port>
  </service>



B вот как передать посылку в операцию TEST пока понимания нет и потом получить ответ.
Программист на стороне реализации сервиса утверждает, что авторизацию мою он видит, а вот посылку не видит.

Спасибо за помощь.
...
Рейтинг: 0 / 0
22.12.2020, 11:26
    #40030067
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Сон Веры Павловны
... то следующим шагом была бы ручная сборка SOAP-разметки для вызова методов, описанных в WSDL, причем для каждого метода разметка своя. А потом получение ответного SOAP, и его разбор. ...

Очевидно я тут застрял. Но как сдвинуться дальше, пока не имею представления.
Фактически, программирую с чужих примеров и приемов
...
Рейтинг: 0 / 0
22.12.2020, 11:43
    #40030071
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Двоичник,

бросайте эти игры с OLE и пишите UNSAFE функцию на C#. Но это будет иметь последствия в удобстве сопровождения приложения и менее строгом уровне безопасности базы данных. Лучшее решение - написать отдельный "слой"-контроллер для взаимодействия с веб-сервисом.
...
Рейтинг: 0 / 0
22.12.2020, 12:44
    #40030095
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Владислав Колосов,

Навыков на C# практически нет. На Delphi малость могу... Но это обещает породить зоопарк в стэке
...
Рейтинг: 0 / 0
22.12.2020, 16:53
    #40030242
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Сон Веры Павловны
[Их тормозами можно пренебречь ввиду несоизмеримости задержек самих обёрток, и временем обращения собственно к сервису. В чем состоит остальное "зло"?


Все банально.
Говнокод, который пишут вокруг обертки требует изрядных затрат времени на написание.
Не говоря уж о нервах.
Когда с этим чудом сталкиваешься, внезапно.
...
Рейтинг: 0 / 0
22.12.2020, 17:18
    #40030250
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Двоичник
Владислав Колосов,

Навыков на C# практически нет. На Delphi малость могу... Но это обещает породить зоопарк в стэке


Вот эта хрень на powershell выполняет запрос к SOAP и пишет ответ в файл
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
function Execute-SOAPRequest-ToFile 
( 
        [String] $URL,
        [String] $Action,
        [Xml]    $SOAPRequest,
        [String] $File,
        [int]    $Timeout = 60000

) 
{ 
        $soapWebRequest = [System.Net.WebRequest]::Create($URL)
        $soapWebRequest.Timeout = $Timeout
        $soapWebRequest.Headers.Add("SOAPAction" , $Action ) 

        $soapWebRequest.ContentType = 'text/xml;charset=utf-8' 
        $soapWebRequest.Accept      = $soapWebRequest.ContentType 
        $soapWebRequest.Method      = 'POST' 
        
        $requestStream = $soapWebRequest.GetRequestStream() 
        $SOAPRequest.Save($requestStream) 
        $requestStream.Close() 
        
        $responseStream = $soapWebRequest.GetResponse().GetResponseStream() 
        
        $fileStream =  new-object System.IO.FileStream( $File, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write )
        $responseStream.CopyTo($fileStream)
        $responseStream.Close()
        $fileStream.Close()

        return $true 
} 



А вот так, выглядят данные которые она обрабатывает

автор$URL
http://ksb3.zzzzz.ru/webservice/ewebsvc.dll/soap/IewsServer

$Action
urn:webservice-electrasoft-ru:types-ewsServerIntf-IewsServer#Login

$SOAPRequest
<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC=" http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs=" http://www.w3.org/2001/XMLSchema" xmlns:ns2="urn:webservice-electrasoft-ru:types-ewsServerIntf" xmlns:ns1=" http://www.borland.com/namespaces/Types">
<SOAP-ENV:Body>
<m:Login xmlns:m="urn:webservice-electrasoft-ru:types-ewsServerIntf-IewsServer" SOAP-ENV:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/">
<ConnectionID xsi:type="xs:string"></ConnectionID>
<UserAlias xsi:type="xs:string">Segddatrjgav</UserAlias>
<Password xsi:type="xs:string">fakfjakj123</Password>
<Language xsi:type="xs:string">RU</Language>
<ProfileID xsi:type="xs:string"></ProfileID>
<ContextXML xsi:type="xs:string"></ContextXML>
<Timeout xsi:type="xs:unsignedInt">1800000</Timeout>
</m:Login>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Данные просто генерируются сервером. Голым Т-SQL.

ЗЫ. Есть такая БЕСПЛАТНАЯ шняга "Fiddler" - он перехватывает и показывает веб-запроcы/ответы любой (ну почти) программы.
Можно посмотреть и сравнить, если есть работающий пример.
...
Рейтинг: 0 / 0
22.12.2020, 17:20
    #40030252
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
написал CLR, скопипастил с интернета статейную

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Collections;
using System.Globalization;

// For the SQL Server integration
using Microsoft.SqlServer.Server;

// Other things we need for WebRequest
using System.Net;
using System.Text;
using System.IO;

    public partial class Functions
    {

    // Function to return a web URL as a string value.
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
    public static SqlString GET(SqlString uri, SqlString username, SqlString passwd)
    {
        // The SqlPipe is how we send data back to the caller
        SqlPipe pipe = SqlContext.Pipe;
        SqlString document;

        // Set up the request, including authentication
        WebRequest req = WebRequest.Create(Convert.ToString(uri));
        if (Convert.ToString(username) != null & Convert.ToString(username) != "")
        {
            req.Credentials = new NetworkCredential(
                Convert.ToString(username),
                Convert.ToString(passwd));
        }
        ((HttpWebRequest)req).UserAgent = "CLR web client on SQL Server";

        // Fire off the request and retrieve the response.
        // We'll put the response in the string variable "document".
        WebResponse resp = req.GetResponse();
        Stream dataStream = resp.GetResponseStream();
        StreamReader rdr = new StreamReader(dataStream);
        document = (SqlString)rdr.ReadToEnd();

        // Close up everything...
        rdr.Close();
        dataStream.Close();
        resp.Close();

        // .. and return the output to the caller.
        return (document);
    }


    // Function to submit a HTTP POST and return the resulting output.
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
        public static SqlString POST(SqlString uri, SqlString postData, SqlString username, SqlString passwd)
        {
            SqlPipe pipe = SqlContext.Pipe;
            SqlString document;
            byte[] postByteArray = Encoding.UTF8.GetBytes(Convert.ToString(postData));

            // Set up the request, including authentication, 
            // method=POST and encoding:
            WebRequest req = WebRequest.Create(Convert.ToString(uri));
            ((HttpWebRequest)req).UserAgent = "CLR web client on SQL Server";
            if (Convert.ToString(username) != null & Convert.ToString(username) != "")
            {
                req.Credentials = new NetworkCredential(
                    Convert.ToString(username),
                    Convert.ToString(passwd));
            }
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded; charset=utf-8";

            // Submit the POST data
            Stream dataStream = req.GetRequestStream();
            dataStream.Write(postByteArray, 0, postByteArray.Length);
            dataStream.Close();

            // Collect the response, put it in the string variable "document"
            WebResponse resp = req.GetResponse();
            dataStream = resp.GetResponseStream();
            StreamReader rdr = new StreamReader(dataStream);
            document = (SqlString)rdr.ReadToEnd();

            // Close up and return
            rdr.Close();
            dataStream.Close();
            resp.Close();

            return (document);
        }
    }




вызываю
Код: sql
1.
select  dbo.fn_get_webrequest('https://mycompany.ru/HTTPTest?name=Иван&surname=Иванов', 'USER', 'PASS')



получаю хрень:
{ "MSG": "22.12.2020 17:15:46 ������ GET ������ � ���� Srvr=\"SERVERNAME\";Ref=\"SERVICENAME\";.", "surname": "������", "name": "����" }

Как сконвертировать полученный JSON в читабельное чтиво?
Спасибо
...
Рейтинг: 0 / 0
22.12.2020, 17:55
    #40030272
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
aleks222
Говнокод, который пишут вокруг обертки требует изрядных затрат времени на написание.

Чушь какая. Сгенерить обертки при наличии навыка - дело 2 минут. Если данные после этого надо пулять сразу в базу - ещё пара десятков строк. Это гораздо меньше строк г/кода на T-SQL с ручным составлением/парсингом SOAP, и пишется всё это гораздо быстрее. Сервис типа загрузки в базу курсов валют ЦБ РФ - популярная на этом форуме тема - пишется до рабочего состояния (с ведением логов, оповещением по почте об ошибках) за полчаса. Утверждаю это по факту наличия соответствующего опыта.
aleks222
Не говоря уж о нервах. Когда с этим чудом сталкиваешься, внезапно.

Ну, у всех бывают неприятные ощущения, когда вдруг выясняется, что чего-то не знаешь. Однако это вовсе не говорит о том, что предмет, о котором отсутствуют знания - плохой.
...
Рейтинг: 0 / 0
22.12.2020, 17:57
    #40030274
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Сон Веры Павловны,

Извините, я вас все же перебью в диспуте. У меня вопрос и как его побороть пока не решил.
Помогите, пожалуйста с проблемой

Спасибо
...
Рейтинг: 0 / 0
22.12.2020, 18:02
    #40030279
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
я уже пробовал
req.ContentType = "application/json; charset=utf-8";
req.ContentType = "application/json; charset=widows-1251";
req.ContentType = "text/xml"

ничего не помогло
...
Рейтинг: 0 / 0
22.12.2020, 18:02
    #40030281
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Двоичник,

Посмотрите заголовки ответа, какая там кодировка
...
Рейтинг: 0 / 0
22.12.2020, 18:20
    #40030285
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Через браузер выполнил. Нет тут ничего
...
Рейтинг: 0 / 0
22.12.2020, 20:55
    #40030312
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HTTPS over T-SQL
Двоичник,

Если принимаемая строка в UTF-8, то ее надо конвертировать в Unicode. В C# строки юникодовые.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / HTTPS over T-SQL / 25 сообщений из 35, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]