2015-09-14 10 views
7

Ich versuche, einen SOAP-Web-Service zu konsumieren, speziell hinzu:Dienst kann nicht Bezug

http://api.affiliatewindow.com/v4/AffiliateService?wsdl

jedoch - nach der Verwendung des Standard-Webservices Dialog einen Dienstverweis hinzufügen - keine der Operationen zur Verfügung steht auf den generierten Klassen - es ist einfach leer:

Empty sadness

ich habe versucht, alle verschiedenen Kombinationen von Optionen auf dem ‚Verweis hinzufügen‘ Dialog ändern.

Gibt es einen anderen Ansatz zum Hinzufügen von Referenzen dieses Typs?

(Anmerkung: um die Operationen tatsächlich aufrufen, wird der Dienst einen Benutzername/Passwort-Header erwartet - Vielleicht muss ich schließen, dass die Klassen während generieren Wenn ja - wie?)

+1

Ich frage mich, ob das Problem mit dem Web-Service-Provider ist? Wenn ich in die WSDL eines Webdienstes gehe, den ich erstellt habe, erscheint das XML im Browser. Wenn ich zu der URL gehe, die Sie in der Frage gepostet haben, weiß der Browser nicht, was er damit machen soll und fragt mich, ob ich die Datei öffnen oder herunterladen möchte, und als ich "offen" sagte, fragte sie, welche Anwendung ich wollte benutzen. – Duston

+1

Aus der Kopfzeile Ihrer URL: "Content-Type: application/wsdl + xml" Aus der Kopfzeile meiner URL: "Content-Type: text/xml" – Duston

+0

Das zugrunde liegende Problem ist, dass AffiliateWindows WSDL nicht konform mit dem [ WS-I Grundprofil] (http://www.ws-i.org/Profiles/BasicProfile-1.1.html) und deshalb würgt VS daran. Die Dialoge "Service-Referenz hinzufügen" und "Web-Referenz hinzufügen" - und die entsprechenden Befehlszeilen-Tools "svcutil" und "wsdl" - tolerieren Macken auf leicht unterschiedliche Weise. In diesem Fall sieht es so aus, als ob "wsdl.exe" damit umgehen könnte, wie in [Black Frogs Antwort] (http://stackoverflow.com/a/32616834/55847) unten beschrieben. – LukeH

Antwort

7

ich die Web Services Description Language Utility (Wsdl.exe) verwendet um die Proxy-Klasse manuell zu generieren.

wsdl http://api.affiliatewindow.com/v4/AffiliateService?wsdl /namespace:AffiliateWindow 

Ich mag Namespace Option so keines der Objekte mit einem Konflikt mit meiner aktuellen Lösung.

wsdl command line

Dann kann ich die resultierende Code-Datei zu Ihrer Lösung hinzuzufügen. Ich habe einen Screenshot von dem Objektbrowser aus der Lösung angehängt:

object browser

Nun können Sie den Dienst instanziiert, wie Sie wollen:

// I don't know anything about Affiliate Window - but I am assuming you would use it 
// like the following code below 

AffiliateWindow.UserAuthentication auth = new AffiliateWindow.UserAuthentication(); 
auth.sType = AffiliateWindow.UserType.affiliate; 
auth.sPassword = "123456"; 

AffiliateWindow.ApiService svc = new AffiliateWindow.ApiService(); 
svc.UserAuthenticationValue = auth; 
+1

Dies funktionierte ein Vergnügen. Du bist mein Held. Stellen Sie sicher, dass Sie das Kopfgeld verwenden, um etwas Spaß zu kaufen. –

+0

..... :-) ..... –

0

ich, dass einige SOAP-Referenzen gefunden haben (wie SalesForce) muss als Web-Referenz anstelle einer regulären Service-Referenz hinzugefügt werden.

Wenn Sie mit der rechten Maustaste auf Verweise klicken, Dienstverweis hinzufügen, klicken Sie unten auf die Schaltfläche Erweitert, dann unten auf die Schaltfläche Webverweis hinzufügen ....
Wenn Sie eine gültige Endpunkt-URL eingeben, sollten in der Liste auf der rechten Seite des Dialogfelds die für die Referenzierung verfügbaren Webdienste angezeigt werden.

+0

Funktioniert nicht :( –

Verwandte Themen