Я пытаюсь вызвать конечную точку 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