Laden...

Webservice Authentifizierung

Erstellt von odif vor 16 Jahren Letzter Beitrag vor 10 Jahren 2.361 Views
O
odif Themenstarter:in
5 Beiträge seit 2007
vor 16 Jahren
Webservice Authentifizierung

Hallo,

ich möchte einen Webservice nutzen, der durch Benutzername und Passwort geschützt ist. Es handelt sich um den Service Synonyms unter http://wortschatz.uni-leipzig.de/axis/servlet/ServiceOverviewServlet . Benutzername und Passwort sind mir bekannt. Ich habe die WDSL-Datei benutzt, um in SharpDevelop eine Webreferenz hinzuzufügen.

Nun habe ich folgenden Code geschrieben:

		
Test.wortschatz.unileipzig.de.SynonymsService a = new Test.wortschatz.unileipzig.de.SynonymsService();
Test.wortschatz.unileipzig.de.RequestParameter b = new Test.wortschatz.unileipzig.de.RequestParameter();
b.parameters = new string[1][];
b.parameters[0] = new string[2];
b.parameters[0][0] = "Auto";
b.parameters[0][1] = "15";
b.corpus = "de";
a.Credentials = new NetworkCredential("user", "pass", "wortschatz.uni-leipzig.de");
Test.wortschatz.unileipzig.de.ResponseParameter c = a.execute(b);

Ob die Parameter-Eingabe korrekt ist, weiß ich selbst nicht. Ich kenne mich bisher mit Web-Services sehr schlecht aus. Hier würde mich auch über eine Erklärung freuen.

Meine eigentliches Problem ist allerdings folgendes: Es kommt beim Aufruf von execute immer eine Exception "Please enter a username!". Ich dachte eigentlich das Problem wäre durch die Verwendung des NetworkCredential-Objekts gelöst. Das ist aber nicht der Fall. Wie löse ich es?

Beste Grüße
odif

B
293 Beiträge seit 2008
vor 10 Jahren

Ich grabe diesen uralten Thread hier noch mal aus, da ich vor einigen Tagen selber vor dem gleichen Problem stand und dieser Thread hier bei Google immer noch ziemlich weit oben ist und es eigentlich keine gute Quelle zur Lösung gab.

Ich habe das Problem mittlerweile beseitigen können und weiteren Suchenden zu Helfen hier nun des Rätsels Lösung.
1.Mittels WSDL eine ServiceReference hinzufügen 1.Zugangsdaten sind für User als auch Passwort "anonymous". Diese müssen in "service.ClientCredentials.UserName" angegeben werden 1.Der eigentliche Aufruf muss im OperationContextScope ausgeführt werden und die Header müssen angepasst werden, damit die Zugangsdaten fehlerfrei beim Webservice ankommen

Auf meinem Blog habe ich sowohl einen ausführlicheren Artikel dazu geschrieben, als auch eine Library zu einfachen Verwendung des Thesaurus-Webservice bereit gestellt.

Ich hoffe das hilft den zukünftigen Suchern. 😉

Wenn ich nicht hier bin, findest du mich auf code-bude.net.