如何使用C#WebClient访问wss端点

时间:2019-04-01 15:14:46

标签: c# webclient prefix wss json-rpc

我正在尝试使用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 :(得分:0)

我改用了WebSockets,并且有效。