Javascript engine in .net
Hallo,
ich entwickele eine .net Anwendung mit integrierter javascript engine, dieV8ScriptEngine.
nun möchte ich aus Javascript ein POST REST call starten und den Result in dem Javascript auswerten, gegebenenfalls einen neuen Call starten. Das ganze funktioniert über XMLHttpRequest.
var engine = new V8ScriptEngine();
FetchWrapper fetchWrapper = new FetchWrapper(engine);
engine.AddHostObject("fetchWrapper", fetchWrapper);
engine.AddCOMType("XMLHttpRequest", "MSXML2.XMLHTTP");
Nun möchte ich aber lieber den httpclient von .net benutzen und habe einen Wrapper gebaut, der mir diesen .net httpclient in der javascript engine bereitstellt. Das ganze funktioniert allerdings nur in eine Richtung. Wenn ich den Result haben möchte, bleibt das JSON immer leer.
Hat jemand zufällt ein kleines Beispiel, wie man das umsetzen könnte?, wie gesagt es soll mit REST json funktionieren...
ich entwickele eine .net Anwendung mit integrierter javascript engine, dieV8ScriptEngine.
nun möchte ich aus Javascript ein POST REST call starten und den Result in dem Javascript auswerten, gegebenenfalls einen neuen Call starten. Das ganze funktioniert über XMLHttpRequest.
var engine = new V8ScriptEngine();
FetchWrapper fetchWrapper = new FetchWrapper(engine);
engine.AddHostObject("fetchWrapper", fetchWrapper);
engine.AddCOMType("XMLHttpRequest", "MSXML2.XMLHTTP");
Nun möchte ich aber lieber den httpclient von .net benutzen und habe einen Wrapper gebaut, der mir diesen .net httpclient in der javascript engine bereitstellt. Das ganze funktioniert allerdings nur in eine Richtung. Wenn ich den Result haben möchte, bleibt das JSON immer leer.
Hat jemand zufällt ein kleines Beispiel, wie man das umsetzen könnte?, wie gesagt es soll mit REST json funktionieren...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7536273057
Url: https://administrator.de/contentid/7536273057
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
2 Kommentare
Neuester Kommentar
Moin.
Ganz einfaches Beispiel ...
Zeppel
Wenn ich den Result haben möchte, bleibt das JSON immer leer.
Vermutlich weil du den Async-Task nicht abgewartet hastGanz einfaches Beispiel ...
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Http;
using System.Text.Json.Nodes;
namespace httpclient {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e) {
try {
// get json
JsonNode json = await GetJSON(@"https://domain.tld?output=json");
if (json != null) {
MessageBox.Show((string)json["yourproperty"]);
}
} catch (Exception ex) {
MessageBox.Show("EXCEPTION:" + ex.Message);
}
}
// function to fetch json
private async Task<JsonNode> GetJSON(string url) {
using (HttpClient client = new HttpClient()) {
client.DefaultRequestHeaders.UserAgent.Add(System.Net.Http.Headers.ProductInfoHeaderValue.Parse("mycsharpclient"));
string jsonstring = await client.GetStringAsync(url);
JsonNode json = JsonNode.Parse(jsonstring);
return json;
}
}
}
}