Как получить доступ к конечной точке wss с помощью C # WebClient - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь вызвать конечную точку json-rpc, используя WebClient. У него есть префикс wss, и я не могу заставить это работать.

Я пытался использовать WebRequest.RegisterPrefix, чтобы исправить это, но мои попытки создать IWebRequestCreate приводят только к «Это свойство не реализовано этим классом».

        static void Send(string methodName, string parametersJObject, int id)
        {

            JObject bodyJObject =
                new JObject(
                    new JProperty("jsonrpc", "2.0"),
                    new JProperty("method", methodName),
                    new JProperty("id", id.ToString()),
                    new JProperty("params", parametersJObject)
                    );


            var cli = new WebClient();

            cli.Headers[HttpRequestHeader.ContentType] = "application/json";
            string postBody = bodyJObject.ToString(Formatting.None);
            string response = cli.UploadString("wss://somesite.com/ws", postBody);

        }

Я пытался добавить это (я нашел это на SO)

        public class FakeRequest : WebRequest
        {
            private Uri _uri;

            public FakeRequest(Uri uri)
            {
                _uri = uri;
            }

            public override Uri RequestUri { get { return _uri; } }
        }

        public class FakeRequestFactory : IWebRequestCreate
        {
            public WebRequest Create(Uri uri)
            {
                return new FakeRequest(uri);
            }
        }

и регистрация его с помощью

       WebRequest.RegisterPrefix("wss://", new FakeRequestFactory());

Я предполагаю, что правильно реализованный IWebRequestCreate является ключевым, но я исключил все варианты и хотел бы знать, есть ли у вас ответ.

Он написан на .NET Framework 4.7, но я могу перейти на .NET Core, если так будет лучше.

Заранее спасибо

/ Soeren

1 Ответ

0 голосов
/ 03 апреля 2019

Вместо этого я попробовал WebSockets, и это сработало.

...