Entwickler-Ecke
Verteilte Systeme - SOAP-Server abfragen
OlafSt - Fr 15.08.14 10:57
Titel: SOAP-Server abfragen
Hallo Freunde,
wie in
diesem [
http://www.entwickler-ecke.de/viewtopic.php?t=106310&start=0&postorder=asc] Thread auch, habe ich das Problem, einen SOAP-Server ansprechen zu müssen. Nun denn.
VS2010 gezündet, ein neues C# WPF-Projekt erstellt (mein erstes, keine Ahnung, wie kompliziert das nun wird) und dem Rat in genanntem Thread gefolgt: WSDL besorgt und importiert. Als letztes steht dort:
Zitat: |
Die Methoden, die Dir das anlegt, benutzen :nixweiss:
Oder wenn Du nicht weiter kommst, hier ein bisschen konkreter fragen. ;-)
|
Tja... Welche Methoden, wo finde ich die ? Kurzum: Wie gehts weiter ? Bin total ahnungslos :(
[Edit: Link fixed]
OlafSt - Fr 15.08.14 20:43
Das hat mich weitergebracht. Aber erst, als ich herausfand, das ich die importierte Referenz als "Anker" für Intellisense benutzen kann ;)
Nun hab ich das Problem, das die Abfragen absolut nicht das geünschte bringen. Ein mitgeliefertes Testprogramm ergibt als Versionsnummer des Servers V7.2, ich bekomme aber 1.06... Und das Login wird mit "Invalid Credentials" ebenfalls abgelehnt. Das gleiche Spiel mit Delphi XE4 versucht, liefert die richtige Versionsnummer, das Login schlägt aber auf die gleiche Art fehl.
Das wird wohl nicht am Import liegen.
Thanks for help ersteinmal !
Th69 - Sa 16.08.14 08:27
Gibt es verschiedene WebService (bzw. WSDL) Versionen?
Ist das ein öffentlicher WebService und du kannst den Link hier posten?
Ansonsten wird es schwierig dir hier weiterzuhelfen :nixweiss:
OlafSt - Di 16.09.14 12:42
Selbst der Anbieter des WebService kann mir hier nicht mehr weiterhelfen. Also dann, auf die öffentliche Tour.
Zunächst einmal: In Delphi habe ich die Probleme gelöst bekommen, das Login funktioniert dort nun tadellos. Hat mir ja auch keiner gesagt, das die Login-Daten in anderer Form übermittelt werden müssen...
Wenn ich das gleiche allerdings in C# versuche, scheitert das ganze schon beim Versuch, die Versionsnummer abzufragen - dies geht, ohne vorher authentifizieren zu müssen.
Man nehme also ein frisches C#-Projekt (egal ob WPF oder WinForms), und erstelle einen Dienstverweis namens "EuroScan" in seinem Projekt, die Daten können von
http://rds.euroscangroup.com/XMLsoapAPIDev/EuroscanSOAP.asmx gezogen werden.
Ich habe mir einen Button gebastelt, der dann einfach die Versionsnummer herausziehen soll. Folgender Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using SOAPTest.EuroScan; using System.Security.Cryptography;
namespace SOAPTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private string GetMD5Hash(string TextToHash) { if (string.IsNullOrEmpty(TextToHash)) return string.Empty; MD5 md5 = new MD5CryptoServiceProvider(); byte[] textToHash = Encoding.Default.GetBytes(TextToHash); byte[] result = md5.ComputeHash(textToHash); string s=System.BitConverter.ToString(result); return s.Replace("-", ""); }
private void button1_Click(object sender, EventArgs e) { EuroScan.AuthenticationResult r; EuroScan.EuroscanXMLSoapServiceSoapClient E;
TB1.Clear(); TB1.AppendText("Creating SOAP-Client\r\n"); E = new EuroScan.EuroscanXMLSoapServiceSoapClient(); TB1.AppendText("Getting Version-Number\r\n"); TB1.AppendText("XMLVersion = " + E.GetEuroscanXMLSoapServiceVersion() + "\r\n"); }
} } |
Im Anhang ein Screenshot des Verweis-Assitenten aus VS2010, wie ich die WSDL-Infos importiere.
Was zum Teufel mache ich falsch ?
Ralf Jansen - Di 16.09.14 19:19
Zitat: |
Ein mitgeliefertes Testprogramm ergibt als Versionsnummer des Servers V7.2, ich bekomme aber 1.06. |
Hast du den Source des Testprogramms? (Egal in welcher Sprache)
OlafSt - Mi 17.09.14 10:04
Nope, nicht zu bekommen. Überhaupt sind die Jungs dort hochgradig unkooperativ, was ich sehr ungewöhnlich finde. Solche Scherze kann man sich heutzutage eigentlich nicht mehr leisten.
Wie dem auch sei, deine Anfrage nach dem Source des Testprogramms brachte mich auf eine Idee: Vergleiche doch mal die Quelltexte deiner C#-Implementation mit der Delphi-Implementierung. Und siehe da: C# importiert das WSDL aus der hier angegebenen URI. Meine Delphi-Version dagegen aus einer völlig anderen URI !
Da es mit Delphi klappt, habe ich die Delphi-URI mal in C# eingegeben und BAZ - es funktioniert :-( Das ist so verdammt gemein.
Ich denke, damit ist die eigentliche Frage beantwortet. Danke
Ralf Jansen, für die Tritte in die richtige Richtung !
[Edit]natürlich auch ein danke an
Th69, dessen eigentlicher Tritt zielführend war ;)[/Edit]
Th69 - Mi 17.09.14 10:57
Dann war meine Frage ja doch zutreffend. ;-)
Th69 hat folgendes geschrieben: |
Gibt es verschiedene WebService (bzw. WSDL) Versionen? |
Ralf Jansen - Mi 17.09.14 10:59
Hast aber nicht fest genug getreten ;)
OlafSt - Mi 17.09.14 13:28
Fixed :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!