2011-09-08 9 views
6

Deseo invocar el servicio .NET ASMX desde la aplicación iOS. He creado mi mensajes SOAP como este:Envío de parámetros al servicio SOAP ASMX desde la aplicación iOS

-(IBAction)submitButtonClicked:(id)sender 
{ 
     NSURL *url = [NSURL URLWithString:@"http://127.0.0.1:8080/NotificationService.asmx"]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setRequestMethod:@"POST"]; 
    [request addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"]; 
    [request addRequestHeader:@"SOAPAction" value:@"http://tempuri.org/HelloWorld"]; 


    NSString *soapMessage = [NSString stringWithFormat: 
          @"<?xml version=\"1.0\" encoding=\"utf-8\"?>" 

"<soap:Envelope 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" 
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" 
          "<soap:Body>" 
          "<Greet xmlns=\"http://tempuri.org/\">" 
          "<deviceToken>some device token</deviceToken>" 
          "<userName>azamsharp</userName>" 
          "</Greet>" 
          "</soap:Body>" 
          "</soap:Envelope>"]; 

    NSString *messageLength = [NSString stringWithFormat:@"%d",[soapMessage length]]; 

    [request addRequestHeader:@"Content-Length" value:messageLength]; 

    [request appendPostData:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

    [request setDelegate:self]; 
    [request startAsynchronous]; 


} 

Las obras de código anteriores, pero como se puede ver que tenga que crear manualmente el mensaje SOAP. ¿Hay alguna forma de pasar los parámetros y el nombre del método y el cuerpo/mensaje del jabón se crean automáticamente? Hubo un ejemplo en StackOverFlow para el mismo escenario exacto, pero no puedo encontrarlo.

+0

has tenido un poco de suerte con esto? – zaitsman

+0

@zaitsman, eche un vistazo a la respuesta que acabo de publicar ... todo un poco anticuado, pero esto puede ayudarlo? – Purpletoucan

Respuesta

0

Suponiendo que pueda generar un WSDL para sus servicios, le recomiendo que consulte WSDL2SOAP para iOS. He utilizado este en un proyecto histórico (hace 2 años o) y ha funcionado bien: -

http://code.google.com/p/wsdl2objc/

Esta es una aplicación que apunta a un WSDL y Genera automáticamente clases para que usted pueda utilizar para acceder a Servicios SOAP. No puedo garantizar que todavía funcione, pero recomiendo investigar porque facilita el manejo de SOAP. Recuerde que la biblioteca (a menos que se haya actualizado recientemente) es anterior a ARC, por lo que, además de los pasos de instalación en los documentos, deberá marcar esto para una gestión de memoria adecuada.

Cuestiones relacionadas