Domanda

Il modulo di test generato da ASMX è abbastanza utile per le operazioni di test. Tuttavia, non esiste un modo evidente per includere le intestazioni SOAP.

Come puoi testare le tue intestazioni senza programmare un client per utilizzare il servizio?

È stato utile?

Soluzione

Se ti interessa l'interoperabilità, non utilizzare le app client .net per testare i servizi web .net. Utilizzare uno strumento adeguato come SOAPUI per testare il servizio Web. www.soapui.org

Lo strumento è scritto in Java, ma è gratuito e assolutamente utile per testare qualsiasi tipo di servizio web.

Altri suggerimenti

Se capisco cosa stai cercando di fare, puoi semplicemente fare una richiesta HTTP usando il SOAP fornito dal tuo asmx. Se apri asmx nel browser, otterrai un elenco di metodi disponibili nel tuo servizio web. Fai clic sul metodo che desideri testare e otterrai una richiesta SOAP che puoi utilizzare, basta inserire i valori che desideri testare. Di seguito è riportato il codice che è possibile utilizzare per testare il SAPONE.

// Set SOAP Message
string msg = "<?xml version='1.0' encoding='UTF-8'?><soap:Envelope>";
...
...

// Make http request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://linktoyour/service.asmx");

req.Headers.Add("SOAPAction", "http://linktoyour/NameOfFuntion");

req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg);

req.ContentLength = bytes.Length;

System.IO.Stream st = req.GetRequestStream();
st.Write(bytes,0,bytes.Length);
st.Close();

// Read response
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
System.IO.Stream st1 = res.GetResponseStream();

System.IO.StreamReader sr = new System.IO.StreamReader(st1, System.Text.Encoding.UTF8);

string txt = sr.ReadToEnd();

// Display response
Response.Write(txt);

Hai chiesto

  

Come puoi testare le tue intestazioni senza programmare un client per utilizzare il servizio?

La risposta è che dovresti programmare un client per usare il servizio.

Gli sviluppatori che scriveranno il codice per consumare il tuo servizio saranno costretti a scrivere un client che usa il tuo servizio mal progettato e difficile da usare con le sue strane intestazioni. È meglio scoprire {design mal progettato, difficile da usare, strano} prima che lo facciano

In questo modo, puoi riprogettare il servizio in modo che sia {ben progettato, piacevole da usare, normale}.

A proposito, scrivere test unitari per il tuo servizio web è un buon modo per farlo. In questo modo, hai clienti piccoli, semplici.

Invece di accedere direttamente alle intestazioni, fornire invece un'astrazione a cui acceda il codice. Ad esempio, se hai un'intestazione chiamata " Customer " ;, potresti fornire una classe di contesto a cui puoi accedere in questo modo:

string customer = MyContext.Current.Customer;

Ora, tutto ciò che devi fare è scambiare un'implementazione simulata nelle tue classi di test che non richiede tutto l'impianto idraulico.

Si noti, tuttavia, che testare ASMX al di fuori di un server Web non è esattamente l'ideale poiché può perdere elementi come la serializzazione. Se si potesse distribuire su un server di prova e testare la copia distribuita, sarebbe meglio. Se ti interessa davvero il test, WCF è un'opzione migliore poiché puoi eseguire l'hosting di WCF piuttosto facilmente nei test.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top