2011-09-08 2 views
6

iOS 응용 프로그램에서 .NET ASMX 서비스를 호출하려고합니다.iOS 응용 프로그램에서 SOAP ASMX 서비스에 매개 변수 보내기

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


} 

위의 코드는 작동하지만 볼 수 있듯이 SOAP 메시지를 수동으로 만들어야합니다. 매개 변수와 메서드 이름을 전달하는 방법이 없으며 비누 본문/메시지가 자동으로 만들어집니다. 동일한 정확한 시나리오에 대한 StackOverFlow에 대한 예제가 있지만 찾을 수 없습니다.

+0

행운이 있나요? – zaitsman

+0

@zaitsman, 내가 방금 게시 한 답변을 살펴보십시오 ... 조금 날짜가 있지만 이것이 당신을 도울 수 있습니까? – Purpletoucan

답변

0

서비스 용 WSDL을 생성 할 수 있다고 가정 할 때 iOS 용 WSDL2SOAP을 사용하는 것이 좋습니다. 나는 역사 프로젝트에서이를 사용했다 (2 년 이상 전) 그것은 잘 작동 : -이 당신이 WSDL을 가리 응용 프로그램입니다

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

및 액세스에 사용하는 것은 자동으로 클래스를 생성 SOAP 서비스. 여전히 작동한다는 것을 보증 할 수는 없지만 SOAP 처리가 쉽기 때문에 조사하는 것이 좋습니다. 라이브러리 (최근에 업데이트되지 않은 경우)가 사전 ARC이므로 문서의 설치 단계 이외에 적절한 메모리 관리를 위해 플래그를 지정해야합니다.

관련 문제