2015-09-14 12 views
7

Sto cercando di consumare un web-service SOAP, in particolare:Impossibile aggiungere riferimento al servizio

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

Tuttavia - dopo aver utilizzato la finestra di dialogo standard Webservices per aggiungere un riferimento al servizio - nessuna delle operazioni sono disponibili sulle classi generate - è solo vuota:

Empty sadness

ho provato a cambiare tutte le diverse combinazioni di opzioni sul dialogo 'aggiungere il riferimento'.

Esiste un altro approccio per aggiungere riferimenti di questo tipo?

(nota: per invocare in realtà le operazioni, il servizio si aspetta un/intestazione Nome utente Password - Forse ho bisogno di includere tale, mentre la generazione le classi Se è così - come??)

+1

Mi chiedo se il problema è con il provider di servizi Web? Quando vado al WSDL di un servizio Web che ho creato, l'XML si apre nel browser. Quando vado all'URL che hai postato nella domanda, il browser non sa cosa fare con esso e mi chiede se voglio aprire il file o scaricarlo, e quando ho detto open, ha chiesto quale applicazione volevo usare. – Duston

+1

Dall'intestazione dell'URL: "Content-Type: application/wsdl + xml" Dall'intestazione del mio URL: "Content-Type: text/xml" – Duston

+0

Il problema di fondo è che il WSDL di AffiliateWindow non è conforme a [ WS-I Basic Profile] (http://www.ws-i.org/Profiles/BasicProfile-1.1.html) ed è per questo che VS si strozza. Le finestre di dialogo "Aggiungi riferimento servizio" e "Aggiungi riferimento Web" e gli strumenti di riga di comando 'svcutil' e' wsdl' - tollerano le stranezze in modi leggermente diversi. In questo caso sembra che 'wsdl.exe' possa gestirlo, come descritto in [Black Frog's answer] (http://stackoverflow.com/a/32616834/55847). – LukeH

risposta

7

ho usato il Web Services Description Language Utility (Wsdl.exe) per generare manualmente la classe proxy.

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

Mi piace usare namespace opzione così nessuno degli oggetti con avere un conflitto con la mia soluzione attuale.

wsdl command line

allora posso aggiungere il file di codice risultante alla soluzione. Ho attaccato uno screenshot del Visualizzatore oggetti dalla soluzione:

object browser

Ora, è possibile creare un'istanza del servizio come si desidera:

// 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

Questo ha funzionato a meraviglia. Sei il mio eroe. assicurati di usare i soldi della taglia per comprare qualcosa di divertente. –

+0

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

0

Ho trovato che alcuni riferimenti SOAP (come SalesForce) devono essere aggiunti come riferimento Web anziché come riferimento di servizio regolare.

Quando si fa clic con il pulsante destro del mouse su Riferimenti, Aggiungi riferimento servizio, quindi fare clic sul pulsante Avanzate in basso, quindi sul pulsante Aggiungi riferimento Web ... in basso.
Se si immette un URL endpoint valido, è necessario visualizzare i servizi Web disponibili per il riferimento nell'elenco nella parte destra della finestra di dialogo.

+0

Non funziona :( –

Problemi correlati