This tutorial outlines how to call Soap Web Services from iOS or Mac OS XCode Projects in just few steps using Native Objective-C libraries and additional source code provided by WSClient++.

Code Generation

First step is to generate code from the available wsdl location. WSDL is Web Service Description Language specified in XML, which allows us to interpret schema used in transfer of objects between local and remote endpoints. To generate code, open WSClient++ and create a new configuration file which will specify WSDL URL, Folder to store generated files and select type as Objective-C and choose iOS or Mac OS as per your choice. As shown in following picture.


Generated Code

WSClient++ generates following sets of classes as below. So lets assume, following simple Inventory Web Service that allows us to Add/Delete/List products.

Synchronous Web Service Client

Synchronous Web Service Client class will be named as “NamedService”, which in our case will be “InventoryService”. Which will have synchronous methods which will make soap calls to destination server and will return the native representation of soap response in terms of custom types or native types as described by the WSDL. Synchronous client will wait for method call to finish, however it may return an error in case of timeout. But this may halt the user interface so we recommend using Asynchronous Web Service Client for most practical purposes.

Asynchronous Web Service Client

Asynchronous Web Service Client class will be named as “NamedServiceAsync” which in our case will be “InventoryServiceAsync”. It will have all methods same as that of Synchronous Web Service Client, but these methods will return nothing. Instead you will have to set a delegate which will have implementations of expected protocol, that will have actions for each method’s response and OnError.

Request/Response and Custom Types

For every custom xml type, WSClient++ will generate corresponding Objective-C class and it will marshal every request in xml as expected by Soap. You can simply invoke and access these objects as your other Objective-C classes, and NSWSDL.* files will do xml parsing and processing for you in background.

Invoking Web Service

After including generated files and NSWSDL.* (and NSXMLDocument.* for iOS)  in your project, you will be able to access web service in your project as shown below.

For Asynchronous calls, please define following methods which will implement responses of your web service and this class will be the delegate passed to web service.

Delegte Methods
  1. -(void) onError: (NSError*) error{
  2. //   … process error…
  4. }
  6. -(void) onCreateProduct:
  7.     (InventoryServiceAsync*)service
  8.     result:(Product*) r{   
  9. //… process result… you will get returned header here…
  11. }

In the same class, we will call method to invoke the service as below,

Calling Web Service
  1. -(void) callService{
  2.     InventoryServiceAsync* ws = [InventoryServiceAsync service];
  3.     // set base url for entire application
  4.     [BaseWebService setGlobalBaseUrl: @""" ];
  5.     // //set base url only for this service
  6.     // [ws setBaseUrl: @""];
  7.     [ws setDelegate: self]; // dont forget to set delegate
  8.     [ws CreateProduct: @”Sample”];
  9. }

So you see, calling Soap Web Service is very easy as you are calling your other native Objective-C API.

Download today your free trial at

Tagged with:

WSClient++ Version 1.728 Released

On December 14, 2010, in News, by admin

We have updated WSClient++ (Version 1.728) that is available for download now. This edition addresses following issues,

  • Soap 1.1 Code generation is now supported.
  • Soap Headers are now supported for iOS, Android and Blackberry.
  • Date Parser has been fixed.
  • Dictionary type is now supported.
  • Array return types are fixed.

We will continue to upgrade WSClient++ to support various platforms as promised.

Click here to download Version 1.728.

Tagged with:

WSClient++ (Soap 1.2 Client Generator) Released

On July 14, 2010, in News, by admin

NeuroSpeech research and development team has finally perfected Soap 1.2 Client Generator for various platforms and it is live today for Cocoa, Java, Flash and .NET platforms.

Web Service Connectivity

Although SOAP is very popular among ASP.NET developers, most of implementations of SOAP is either incomplete or very time consuming and needs more knowledge of XML and SOAP. Today we are building applications on variety of mobile platforms, that requires Web Service connectivity to servers to pull data and to perform business transactions. And today mobile platforms have become more powerful and that has given opportunity for us to deploy enterprise applications on mobile platforms. Today ASP.NET Web Services are very common way to communicate between enterprises and to develop service oriented applications. So there was a great need for powerful SOAP tools, and we identified that platforms like iPhone (iOS), Mac OSX, Android, Blackberry, Flash have very limited options for enterprise web service connectivity.

WSClient++ Program

WSClient++ program lets you define configurations of your enterprise connectivity and it generates source code that can be used without any knowledge of XML/SOAP. All you have to do is, configure your connectivity, i.e. specify the WSDL url, specify folder and files to be generated and hit the Generate button.

It is available for Mac OSX 10.5+ and for Windows XP SP2 onwards. This program is written in Adobe AIR, so that it is available on multiple platforms.

Key Highlights

  1. Objective-C source code generator, fully optimized for memory, asynchronous and synchronous client generator
  2. Java source code generator, full optimized for memory, fully implemented Parcelable interface for android
  3. Ability to generate source code of multiple web services in single namespace/package sharing single inheritance hierarchy
  4. Source code generated is formatted according to native platform requirements
  5. Additional libraries for XML/SOAP connectivity is included with source code

Known Limitations

As we are trying to provide facility for light platforms (mobile/flash) to connect to ASP.NET enterprise web services, every data type of ASP.NET is not supported yet. We do support multiple classes and class hierarchy but things like byte[] etc are not yet implemented, we support members of class should be only of type “Class” and “int, long, float, double, DateTime, bool and String” and arrays of supported types. As new versions will be available in future, we are working towards including byte[] and add more types to the program and we are working on implementing Soap with Attachments in near future soon.

Download Demo Edition

Demo edition has following limitations.

  • 10 Seconds wait before Starting Application
  • Only generates first two methods of Web Service
  • Only generates first two web services from the list of WSDL urls passed
  • No Asynchronous Clients for Cocoa and Java
  • No Parcelable Implementation for Android
  • Click Here to download and install Adobe Air 2.0.
  • Click Here to download and install WSClient++ 1.22.

  • Share
    Tagged with: