.NET Web-Service ohne Proxy-Klasse
-
03-07-2019 - |
Frage
Ich versuche, eine Anwendung zu erstellen, die ich eine Methode zur Laufzeit auf einem beliebigen Webservice (die URL, von denen ich werde auch zur Laufzeit zur Verfügung stellen) angegeben ausführen lassen. Ich habe herausgefunden, wie Type.InvokeMember verwenden, um die willkürliche Methode auszuführen, aber wie kann ich festlegen, um den Webdienst zu verbrauchen, ohne eine Proxy-Klasse zu schaffen.
Ich fand Wie rufe ich eine Webservice ohne eine Web-Referenz? die hilft mir, wenn ich die WSDL bereits habe und nur die URL ändern wird, aber ich möchte in der Lage sein, jede Webservice zu rufen und das Ergebnis zu holen.
Danke.
Lösung
Sie sollten einen Blick auf dynamische Proxy für WCF nehmen (es tut mir leid, aber ich kann einen Link, um es jetzt zu finden scheinen) - es ist eine Bibliothek, die Sie inspizieren Dienste zur Laufzeit können (wenn sie veröffentlichen ihre Metadaten) und auch Methoden aufrufen (keine Notwendigkeit für Metadaten, das zu tun).
Edit: tatsächlich, es scheint, dass es ein Projekt auf Codeplex zu tun genau das: SIF
Andere Tipps
Für WCF, müssen Sie die Proxy-Klasse entweder haben oder die Schnittstelle den Dienst implementiert, so ist es nicht wahrscheinlich, dass Sie es über WCF tun können (WCF endlos erweiterbar ist aber so kann es eine Art und Weise sein.
Sie können immer nur Spin-up ein HttpWebRequest Objekt und machen einen "old-school" Aufruf an den Dienst und analysieren die Ergebnisse selbst.
Es soll möglich sein, Ihren Anruf machen nur mit WebRequest . Sie werden den Körper des Nachricht selbst bilden müssen, aber das ist nicht sehr schwer .