Search code examples
iphoneobjective-cios4soapwsdl

Need help on Objective-C code (WSDL2ObjC generated)


In the WSDL2ObjC documentation there is a sample code like below, but in my generated code I couldnt find any class, method or property equavilant to "myOperationUsingParameters" what is that and where can I find it? I don't know also what "myOperation" and what "ns1" is.

I'm newbie, so in Objective C maybe there is a meaning when I change the capitals of variables in a certain way and concatenate them with some keywords?

for instance: ns1_MyOperationRequest -- myOperationUsingParameters

tnx

#import "MyWebService.h"
MyWebServiceBinding *binding = [MyWebService MyWebServiceBinding];
binding.logXMLInOut = YES;

ns1_MyOperationRequest *request = [[ns1_MyOperationRequest new] autorelease];
request.attribute = @"attributeValue";
request.element = [[ns1_MyElement new] autorelease];
request.element.value = @"elementValue"];

MyWebServiceBindingResponse *response = [binding myOperationUsingParameters:request];

Solution

  • All depends on your web service class name etc as wsdl2objc makes up alot of your NSObjects and methods based upon this, however, suggesting that you are using soap 1.2 bindings and your web service was called 'SimpleService', the following would call a web method named 'MobileTestService and return back the integer value from the xml generated.

    -(NSString *)returnThatStringFromWebServiceResult 
    
    {
    
    
    SimpleServiceSoap12Binding * binding = [SimpleService SimpleServiceSoap12Binding];
    
    binding.logXMLInOut = YES; // shows all in the console log.
    
    SimpleService_concat * testParams = [[SimpleService_concat new]autorelease];
    
    testParams.s1 = someTextField.text; // parameters all become properties of this testParams object
    
    testParams.s2 = anotherTextField.text;
    
    SimpleServiceSoap12BindingResponse * response= [binding SimpleService_concatUsingParameters:testParams];
    
    [response self]; // removes compile error
    
    NSArray * responseBodyParts = response.bodyParts;
    
    NSError * responseError = response.error;
    
    if (responseError!=NULL) 
    
    {
        return @"";     // if error from ws use [responeError code]; for http err code
    
    
    }
    
    for (id bodyPart in responseBodyParts)
    
    {
    
        if ([bodyPart isKindOfClass:[SimpleService_concat_Response class]]) 
    
        {
            SimpleService_concatResponse* body = (SimpleService_concatResponse*) bodyPart;
    
            return body.SimpleService_concatResult; // if you are returning a string from your WS then this value will be a string, 
    
        }
    
    }