Pregunta

El formulario de prueba generado por ASMX es bastante útil para las operaciones de prueba. Sin embargo, no hay una forma aparente de incluir encabezados SOAP.

¿Cómo puede probar sus encabezados sin programar un cliente para usar el servicio?

¿Fue útil?

Solución

Si le interesa la interoperabilidad, no use las aplicaciones de cliente .net para probar los servicios web de .net. Use una herramienta adecuada como SOAPUI para probar su servicio web. www.soapui.org

La herramienta está escrita en Java, pero es gratuita y muy útil para probar cualquier tipo de servicio web.

Otros consejos

Si entiendo lo que está intentando hacer, puede hacer una solicitud HTTP utilizando el SOAP que le proporciona su ASMX. Si abre su asmx en el broswer, obtendrá una lista de métodos disponibles en su servicio web. Haga clic en el método que desea probar y obtendrá una solicitud SOAP que puede usar, solo complete los valores que desea probar. A continuación se muestra el código que puede usar para probar el SOAP.

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

Has preguntado

  

¿Cómo puede probar sus encabezados sin programar un cliente para usar el servicio?

La respuesta es que debe programar un cliente para utilizar el servicio.

Los desarrolladores que escribirán el código para consumir su servicio se verán obligados a escribir un cliente que use su servicio mal diseñado y difícil de usar con sus extraños encabezados. Es mejor que descubras sobre {mal diseñado, difícil de usar, extraño} antes de que lo hagan.

De esa manera, puede rediseñar el servicio para que esté {bien diseñado, sea fácil de usar, normal}.

Por cierto, escribir pruebas unitarias para su servicio web es una buena forma de hacerlo. De esa forma, tienes clientes pequeños y simples.

En lugar de acceder directamente a los encabezados, proporcione una abstracción a la que su código acceda en su lugar. Por ejemplo, si tiene un encabezado llamado " Cliente " ;, puede proporcionar una clase de contexto a la que pueda acceder así:

cliente de cadena = MyContext.Current.Customer;

Ahora, todo lo que tiene que hacer es intercambiar una implementación simulada en sus clases de prueba que no requiera toda la plomería.

Tenga en cuenta, sin embargo, que probar ASMX fuera de un servidor web no es exactamente ideal, ya que puede perder cosas como la serialización. Si pudiera implementarse en un servidor de prueba y probar la copia implementada, estaría mejor. Si realmente le interesan las pruebas, WCF es una mejor opción ya que puede alojar WCF con bastante facilidad en las pruebas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top