2011-08-25 11 views
5

Ho bisogno di utilizzare alcuni servizi Web .NET asmx attualmente implementati in alcuni siti Web. Devo creare un'app che consumi quei webservices come fa il webpsite. Ci sono due problemi. Innanzitutto, non ho alcuna specifica su quei metodi di webservice (chiamate, formato utilizzato ecc.). E in secondo luogo, ho creato solo un'app che usa JSON-framework per ottenere i dati JSON da flick usando la sua API. Immagino che sia stato fatto usando i webservices REST :) Capisco che per poter pubblicare post/arrivare al server ho bisogno di costruire una stringa di richiesta, quindi passarla al server web, ottenere risultati, analizzarli (XML o JSON) e quindi guardali. Quindi, non so come identificare il formato dei servizi web del sito web corrente. Ho visto la fonte di quel sito Web, ho visto un mucchio di file di codice Javascript che stanno facendo un sacco di controllo misterioso, validazione e cose del genere. Quindi, come identificare il formato corretto?Come distinguere è un webservice SOAP o REST?

risposta

6

Se si tratta di un servizio .NET ASMX, è sempre SOAP. Un servizio SOAP esposto su HTTP utilizzerà sempre i metodi POST HTTP per la comunicazione. Dovrebbe anche esporre un file .wsdl affinché tu consumi e generi codice client da quello, quindi non dovresti preoccuparti di usare un framework JSON o orchestrare le tue richieste HTTP a quel servizio web ... il tuo Objective-C generato il cliente dovrebbe occuparsene per te.

This question seems to have the answers you need for doing this in Objective-C.

+0

Ho provato a visualizzare più informazioni con firefox firefox. Dopo aver rintracciato le richieste, vedo che la richiesta è stata inoltrata ad alcuni link: http://www.website.com/GetQuote.aspx?units=1&len=1&width=1&height=1&weight=1&type=1&qty=1&cnt=GB&postcode=as123 It sembra il webservice REST. – Centurion

2

Come @whaley dice nella sua risposta, sembra che hai a che fare con un servizio SOAP qui. Sapendo che ti permette di fare un passo nella giusta direzione, ma se vuoi interagire con esso dovrai fare di più. Avrai bisogno di conoscere i dettagli delle operazioni SOAP che supporta, lo schema XML per i messaggi di richiesta e risposta, ecc. Se sei in grado di trovare il file WSDL, dovrebbe fornirti tutte queste informazioni.

Se non si riesce a rintracciare il file WSDL (alcuni servizi non gradiscono renderlo facile per una serie di motivi), allora si può ancora essere in grado di capirlo. Se il sito web interagisce realmente utilizzando l'interfaccia SOAP, puoi esaminare le richieste inviate dal tuo browser utilizzando un numero qualsiasi di strumenti. In Safari, abilita il menu degli strumenti per sviluppatori e poi mostra il web inspector. Puoi vedere i dettagli delle richieste HTTP e vedere cosa sta succedendo. Firefox ha il plugin firebug che può fare lo stesso e altro. Ogni browser ha i suoi strumenti per gli sviluppatori, ma dovrai trovare lo strumento giusto per il tuo browser.

Word of warning: spesso una pagina Web che interagisce con il servizio back-end non utilizza direttamente il servizio SOAP. Potrebbe essere utilizzare un'interfaccia alternativa e non pubblica per effettuare le chiamate necessarie. Se osservi le richieste inviate dal tuo browser e assomiglia a un messaggio SOAP (molte cose come elementi SoapEnvenlope con XML di richiesta/risposta distinti), allora è abbastanza sicuro presumere che tu possa replicare quei messaggi SOAP da objective-c. In caso contrario, potresti essere sfortunato a meno che non sia possibile rintracciare un file WSDL.

Problemi correlati