2011-09-08 14 views
6

Desidero richiamare il servizio .NET ASMX dall'applicazione iOS. Ho creato il mio messaggi SOAP come questo:Invio di parametri al servizio ASMX SOAP dall'applicazione 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]; 


} 

Le opere di codice di cui sopra, ma come potete vedere ho dovuto creare manualmente il messaggio SOAP. C'è un modo per passare solo i parametri e il nome del metodo e il corpo/messaggio di sapone viene creato automaticamente. C'era un esempio su StackOverFlow per lo stesso identico scenario ma non riesco a trovarlo.

+0

hai avuto fortuna con questo? – zaitsman

+0

@zaitsman, dai un'occhiata a una risposta che ho appena postato ... tutto un po 'datato ma questo potrebbe aiutarti? – Purpletoucan

risposta

0

Supponendo di poter generare un WSDL per i propri servizi, si consiglia di guardare a WSDL2SOAP per iOS. Ho usato questo in un progetto storico (almeno 2 anni fa) e ha funzionato bene: -

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

Si tratta di un'applicazione che si punta a un WSDL e genera automaticamente le classi per l'uso per l'accesso Servizi SOAP. Non posso garantire che funzioni ancora, ma raccomanderei di investigare perché facilita la gestione dei SOAP. Ricordare che la libreria (a meno che non sia stata aggiornata di recente) è pre-ARC, quindi oltre ai passaggi di installazione nei documenti, è necessario contrassegnarlo per un'appropriata gestione della memoria.

Problemi correlati