¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Problema al analizar XML en iOS con SDK SUP OData: ¿Cómo resolver el error NSInvalidArgumentException?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 9 Vistas
0
Cargando...

Hola,

(Había publicado esto en el foro de desarrollo de iPhone/iPad, pero quiero consultar con los expertos de este foro si han experimentado esto antes o no, estoy conectando desde iOS->SAP Netweaver Gateway a través de OData)

Esta es la primera vez que trato con iOS SUP OData SDK. Construí las aplicaciones basadas en las guías de SDN.

He terminado de construir el Modelo y la clase de Datos en SAP, y el servicio de gateway está funcionando bien. Puedo enviar la URL en mi navegador y obtener la respuesta de vuelta con el XML esperado.

Ahora, estoy construyendo una aplicación iOS, que enviará la misma URL de vuelta a SAP, y recibirá el XML. Estoy usando el SDK SUP OData para iOS, la guía del desarrollador está disponible aquí: http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc01708.0210/doc/html/nkr1311702599475...

La aplicación envía la URL con el componente SDMConnectivity, a través de HTTPRequest, y la conexión con el SAP funciona bien, y el XML del documento de servicio esperado se obtiene correctamente. Lo siguiente que debo hacer es analizar el XML del documento de servicio y convertirlo en un objeto de documento de servicio de objetivo C. Realizo el análisis con el componente SDMParse. El problema surge aquí.

1. Estoy siguiendo la guía, para analizar los documentos de servicio XML con este código:

SDMODataServiceDocument* sdmParseODataServiceDocumentXML(NSData* const cont_in);
 self.serviceDocument = sdmParseODataServiceDocumentXML([self.httpRequest responseData]);

2. El error ocurre después de ejecutar la segunda línea de código, el error mostrado en la consola es:

2011-12-29 18:21:31.412 OData_SUP_1[4032:15203] +[NSString isNullOrEmpty:] reconocimiento de selector no válido enviado a la clase 0x17c9c3c
2011-12-29 18:21:31.414 OData_SUP_1[4032:15203] *** Terminating app debido a una excepción no capturada 'NSInvalidArgumentException', motivo: '+[NSString isNullOrEmpty:]: unrecognized selector sent to class 0x17c9c3c'
*** Primera pila de llamadas de lanzamiento:
(0xaeb062 0x39add0a 0xaecaed 0xa51f10 0xa51cf2 0x4091d 0x3a8fb 0x3b29b 0x3ba88 0x27731 0x1652672 0x4548b37 0x454edab 0x1650e0d 0x270f0 0x27b2d 0x2817a 0x3859 0xc802c6 0xc81196 0xc90033 0xc90ae8 0xc84399 0x1facfa9 0xabf1d5 0xa24042 0xa2292a 0xa21dd4 0xa21ceb 0xc80b97 0xc8238b 0x34f 0x2d15 0x1)
terminate called throwing an exception

Luego, me quedé atascado en este error durante todo el día. No puedo depurar el código fuente porque el SDK no proporciona el archivo de implementación. He intentado imaginar lo mejor posible qué salió mal, pero no puedo resolverlo. Incluso he intentado convertir los Datos que recibí de [self.httpRequest responseData] en XML, y compararlo con el resultado del Navegador y las Guías, nada parece estar mal.

¿Alguien ha experimentado este problema antes? ¿O me pueden aconsejar qué puedo hacer en Xcode para comprender mejor el error que obtuve?

<
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Wang,

Gracias por tu respuesta. He seguido lo que me dijiste, al ejecutar la aplicación en el cliente, estoy obteniendo un error como Error de Canal de Mensajes [Error en el controlador del canal de mensajes]. Permíteme explicarte todo lo que tengo en mano.

Estoy tratando de lograr el flujo ios<->Relayserver<->Servidor SUP<->NWGW<->SAP

Desde el lado de SUP.

1. He proporcionado una URL de servicio, con esa URL puedo obtener la respuesta en el navegador.

2. En las propiedades de conexiones de la aplicación, he dado la URL en el punto final de la aplicación.

3. En el cliente puedo obtener el punto final, cuando intento solicitar esa URL, obtengo un error como el que mencioné anteriormente.

4. En la sección de conexión del SCC, en la plantilla de proxy, he dado la misma URL. Cuando hice la prueba de conexión, obtuve un fallo de ping.

Desde el lado de SAP.

1. He creado un servicio de canal genérico y no un servicio de canal oData.

2. He configurado el punto final de push en SAP.

¿El canal causará algún problema y cuáles son todas las configuraciones que necesito mantener en el lado de SAP? Cuando puedo ver la respuesta en el navegador, ¿por qué la prueba de conexión al proxy falla? Realmente estoy atascado, ¿puedes por favor ayudarme a salir de este problema? No puedo encontrar los pasos adecuados que se deben realizar. Si puedes, por favor, dame todos los pasos que has seguido tanto en el gateway como en SUP. ¡Gracias de antemano!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola DinyBee,

Supongo que tienes una URL que puede obtener respuesta de tu Servicio de Puerta de Enlace de Canal OData. Puedes probar esto en tu navegador. La URL debería ser algo así: http://gateway.company.com:8000/sap/opu/sdata/sap/APPLICATION/XXXCollection?sap-client=100&$format=x...

Si la URL funciona, puedes configurar una Conexión de Aplicación en tu SCC siguiendo los pasos:

1. Selecciona Aplicaciones, luego ve a la pestaña Conexión de Aplicaciones

2. Registra un nuevo Usuario, con toda la información correcta del Servidor, recuerda especificar tu código de activación.

3. Después de registrar al usuario, en la misma pestaña de Conexión de Aplicaciones, selecciona tu usuario y haz clic en Propiedades.

4. Ve a la opción Proxy, e inserta la URL "http://gateway.company.com:8000/sap/opu/sdata/sap/APPLICATION/" en el Punto Final de la Aplicación. Luego haz clic en Aceptar.

5. En el código de tu aplicación iOS, registra tu Aplicación usando el objeto LiteSUPUserManager, y luego obtén el Punto Final de la Aplicación usando el objeto LiteSUPAppSetting.

6. Ahora, tu aplicación ya está en línea en el SUP, y la aplicación también sabe a qué URL debe conectarse.

7. A partir de ahora, puedes usar el objeto SDMRequestBuilder para construir la solicitud y obtener la respuesta de la Puerta de Enlace OData.

Estos son solo pasos a alto nivel para que los uses como referencia, debes consultar la documentación de Sybase para obtener más información sobre los objetos que mencioné.

Gracias.

Saludos,

Edison Wang

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Wang,

También estoy intentando crear una aplicación basada en Odata en SUP2.1, pero me he quedado atascado desde el principio. ¿Cómo configurar la conexión de Proxy en SCC? Tengo una URL de servicio pero al proporcionarla me da un fallo de Ping. ¿Puedes ayudarme con este problema proporcionando pasos de configuración adecuados para configurar el canal Odata en SUP?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Edison,

No creo que esta sea la sección correcta del foro para tu problema, parece estar más relacionado con el desarrollo de SUP / iOS.

Te sugiero preguntar en [foro de soporte de Sybase|http://www.sybase.com/detail_list?id=11507] o en [Proyecto SUP en Code exchange|https://cw.sdn.sap.com/cw/groups/sup-apps]

Saludos,

Ivan

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?