2010-04-05 3 views
9

Ich bin angemeldet, ich habe Beispielcode heruntergeladen, ich habe eine WSDL ... und doch habe ich keine Ahnung, wie man dieses Zeug in meine bekommen vorhandene .Net-Anwendung. Die WSDL war in einer Zip-Datei, nicht in einer URL, daher kann ich nicht einfach "Web Reference hinzufügen". Ich habe das Wsdl-Tool von der .Net-Eingabeaufforderung aus ausgeführt, und es hat eine nette Klasse für mich gemacht ..., die ich in meinen web_reference-Ordner fallen lasse, gibt mir keine Art von instanziierbaren Klassen.FedEx Web Services in .Net integrieren, stecken bei Schritt 1

Ich weiß, dass mir etwas dummes fehlt. Kann mir bitte jemand in die richtige Richtung zeigen?

Antwort

2

Eigentlich können Sie einfach "Web Reference hinzufügen". Geben Sie den Pfad zur URL an.

OTOH, Sie sollten alle neuen Web-Service-Entwicklung (sogar Client-Entwicklung) mit WCF. Microsoft betrachtet die ASMX-Webdienste nun als "Legacy-Technologie".

BTW, ich habe gerade versucht, ihre Adresse Validierung Service, und es wird nicht funktionieren mit .NET. Sowohl ASMX- als auch WCF-Clients versuchen, den XML-Serializer zu verwenden, um diesen Dienst zu nutzen, und es gibt einen Fehler, der verhindert, dass dieser Dienst verwendet wird.

+0

Ich habe ein paar Fragen, aber # 1 ist, wird es nicht mit .Net funktionieren? Wie in aller Welt kann das sein? Ich meine, FedEx und .Net-Kommunikation kann einfach keine obskure Sache sein ... es muss in vielen verschiedenen Apps da draußen verwendet werden. Recht? Zweitens, wenn die WSDL, die sie mir gegeben haben, in einer Zip-Datei ist, dann habe ich keine echte URL, die ich an den "Add Web Reference" -Dialog übergeben kann, oder? Oder sagst du, der Pfad zur .zip sollte ausreichen? Ich versuche gerade, den Address Verification Service jetzt zu benutzen - das ist die, die uns gerade beschäftigt. Das ist nicht gut... –

+0

@Matt: Es wird nicht mit .NET funktionieren, da der Dienst nicht WS-I BP-1-konform ist, und weil dies in diesem Fall einen Fehler im XmlSerializer hervorruft, der wahrscheinlich nie behoben wird. Der Pfad zur WSDL-Datei ist ausreichend. Entpacke es aus dem ZIP. –

+0

Also, Sie sagen mir, dass ich nicht die WSDL oder anythign so verwenden kann, und ich muss im Grunde herausfinden, wie es mit pure xml http Anforderungen und Dinge zu tun? –

0

Matt, die WSDL-Zip-Datei enthält die WSDL und die zugehörigen Transaktionen für diesen Dienst. Entpacken Sie die Datei und fügen Sie dann die Referenz der WSDL in Ihrem Code hinzu.

+0

@support: Ich habe das gestern versucht. Es hat nicht funktioniert. –

0

Versuchen Sie, den Namespace der Proxy-Klasse in den Ihrer Anwendung zu ändern. Ich benutze derzeit die Proxy-Klasse mit C# und es funktioniert trotz der begrenzten Dokumentation und Proben von FedEx.

+0

@Damon: wie hilft das? –

9

Der richtige Weg, die FedEx API WSDL-Datei in Visual Studio 2010 zu laden:

  1. Öffnen Sie die Lösung Explorer
  2. Rechtsklick auf Ihr Projekt
  3. Klicken Sie auf 'Add Service Reference'
  4. das Klicken Schaltfläche "Erweitert ..."
  5. Klicken Sie auf die Schaltfläche "Webreferenz hinzufügen ..."
  6. Geben Sie den genauen Pfad zur WSDL-Datei für den spezifischen Pfad ein FedEx Web-Referenz, die Sie verwenden. Zum Beispiel habe ich meins in das Stammverzeichnis meines C: \ Laufwerks extrahiert, so dass ich in das URL-Feld nur "C: \ ShipService.wsdl" ohne Anführungszeichen eingegeben habe. Wenn Sie Anführungszeichen hinterlassen, wird es nicht funktionieren.
  7. Wenn Sie loslegen, sollte Visual Studio die WSDL in praktikable Klassen für Sie konsumieren. Klicken Sie auf Referenz hinzufügen und genießen Sie!

Hinweis: Stellen Sie sicher, dass Sie die FedEx-Dokumentation lesen - viele ihrer Dienste haben sich geändert und die Implementierung kann ein Albtraum sein. Beispielsweise wird der Adressvalidierungsdienst nicht ordnungsgemäß verwendet und erstellt in Reference.cs zweidimensionale Arrays, in denen sie nicht vorhanden sein sollten. Dies wird in der Dokumentation ausführlich beschrieben. Schlimmer noch, die Tatsache, dass sie Adressvalidierung in ihrer Entwicklungsumgebung nicht erlauben, ist nirgends dokumentiert! Viel Glück!

+0

Das hat für mich funktioniert. Vielen Dank. –

+0

Thax viel, ich habe mehr als 2 Stunden verschwendet, um die Server-URL zu finden –