2011-09-08 11 views
6

.NET ASMX hizmetini iOS uygulamasından çağırmak istiyorum. Bu gibi benim SOAP mesajları yarattı:Parametreler iOS uygulamasından SOAP ASMX Hizmetine Gönderme

-(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]; 


} 

Yukarıdaki kod eserlerini ama gördüğünüz gibi ben elle SABUN mesajı oluşturmak zorundayız. Parametreleri ve yöntem adını geçmek için herhangi bir yolu var mı ve sabun gövdesi/mesajı otomatik olarak oluşturulur. Aynı kesin senaryo için StackOverFlow üzerinde bir örnek vardı, ancak bunu bulamıyorum.

+0

Bununla bir şansın oldu mu? – zaitsman

+0

@zaitsman, az önce gönderdiğim bir cevaba bir bakın ... hepsi biraz tarihli ama bu size yardımcı olabilir mi? – Purpletoucan

cevap

0

Hizmetleriniz için bir WSDL oluşturabileceğinizi varsayarak iOS için WSDL2SOAP dosyasına bakmanızı öneririz. Ben tarihsel bir projede bu kullanmışlardır (2+ yıl önce) ve iyi çalıştı: - Bu, bir WSDL işaret eden bir uygulamadır

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

ve erişmek için kullanmak için otomatik olarak sınıflar oluşturur SOAP hizmetleri Hala işe yaradığını kefil edemem, ama SOAP kullanımı için kolaylık sağladığından araştırma yapmayı öneriyorum. Kütüphanenin (yakın zamanda güncellenmemişse) ARC öncesi olduğunu unutmayın, bu nedenle dokümanlardaki kurulum adımlarına ek olarak, uygun bellek yönetimi için bunu işaretlemeniz gerekir.