2011-08-25 13 views
5

Necesito consumir algunos servicios web .NET asmx que actualmente están implementados en algún sitio web. Necesito crear una aplicación que consuma esos servicios web de la misma manera que lo hace la página web. Hay dos problemas Primero, no tengo ninguna especificación sobre los métodos de servicio web (llamadas, formato usado, etc.). Y en segundo lugar, solo tengo que crear una aplicación que use JSON-framework para obtener datos JSON de flick usando su API. Supongo que eso fue hecho usando REST webservices :) Entiendo que para realizar posts/llegar al servidor necesito construir una cadena de solicitud, luego pasarla al servidor web, obtener resultados, analizarlos (XML o JSON) y luego verlos. Por lo tanto, no sé cómo identificar el formato de los servicios web del sitio web actual. He visto la fuente de ese sitio web, vi un montón de archivos de código Javascript que están haciendo un montón de cosas misteriosas de comprobación, validación y etc. Entonces, ¿cómo identificar el formato correcto?¿Cómo se puede distinguir si se trata de un servicio web SOAP o REST?

Respuesta

6

Si se trata de un servicio .NET ASMX, siempre es SOAP. Un servicio SOAP expuesto a través de HTTP siempre usará los métodos HTTP POST para la comunicación. También debe exponer un archivo .wsdl para que lo consuma y genere también un código de cliente para que no tenga que preocuparse por usar un marco JSON u orquestar sus propias solicitudes HTTP a ese servicio web ... su Objective-C generado el cliente debe encargarse de eso por usted.

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

+0

He intentado ver más información con Firefox firebug. Después de hacer un seguimiento de las solicitudes, veo que la solicitud se realiza en un enlace: http://www.website.com/GetQuote.aspx?units=1&len=1&width=1&height=1&weight=1&type=1&qty=1&cnt=GB&postcode=as123. parece un servicio web REST. – Centurion

2

Como @whaley dice en su respuesta, parece que se está tratando con un servicio SOAP aquí. Saber eso te permite dar un paso en la dirección correcta, pero si quieres interactuar con él necesitarás hacer más que eso. Necesitará conocer los detalles de las operaciones SOAP que admite, el esquema XML para los mensajes de solicitud y respuesta, etc. Si puede encontrar el archivo WSDL, debe proporcionarle toda esa información.

Si no puede rastrear el archivo WSDL (a algunos servicios no les gusta hacerlo fácil por varias razones), entonces todavía puede ser capaz de resolverlo. Si el sitio web realmente interactúa utilizando la interfaz SOAP, entonces puede ver las solicitudes que su navegador envía utilizando cualquier cantidad de herramientas. En Safari, habilite el menú de herramientas del desarrollador y luego muestre el inspector web. Puede ver los detalles de las solicitudes HTTP y ver qué está sucediendo. Firefox tiene el plugin firebug que puede hacer lo mismo y más. Cada navegador tiene sus propias herramientas para desarrolladores, pero deberá encontrar la herramienta adecuada para su navegador.

Palabra de advertencia: con frecuencia, una página web que interactúa con su servicio de fondo no utiliza el servicio SOAP directamente. Puede estar utilizando una interfaz alternativa y no pública para hacer las llamadas que necesita. Si observa las solicitudes que envía su navegador y se ve como un mensaje SOAP (muchas cosas como elementos SoapEnvenlope con distintos XML de solicitud/respuesta), entonces es bastante seguro asumir que puede replicar esos mensajes SOAP de Object-C. De lo contrario, es posible que no tenga suerte a menos que pueda rastrear un archivo WSDL.

Cuestiones relacionadas