Outils pour utilisateurs

Outils du site


Panneau latéral

Accueil

Select other language :


Apprentissage

Enseignements

Enseignements Département Informatique SI5 et Master IFI

Enseignements Département Bâtiment Polytech'Nice

Autres Formations française et étrangère

Activités administratives, Ingénierie et Innovation Pédagogiques

Apprentissage Département Informatique SI5/Master 2 ingénierie informatique EUR DS4H


Recherche

Valorisation de la Recherche

Dépôts Logiciels à l’Agence de Protection des Programme (APP)

Valorisation des résultats de recherche et transfert

Diffusion de la Culture scientifique et Technologique

Communications de presse

Séminaire ENSI Tunis

Pédagogie Innovante

Relations industrielles et socio-économique

Organisation de Manifestations

  • Conférence sur les FabLabs, Alexandre Schneider, Professeur Agrégé en Génie Mécanique, Université de Reims Champagne-Ardenne Web
  • Journées UbiMob'14 Site Web

Animation de la Recherche

U-Santé

Privé

Outils

Sources d'Informations

cours:service_oriented_computing_and_web_services:2017-2018:gsoap

gSOAP

In this tutorial, we are going to use gSOAP Toolkit. Because gSOAP is working on a lot of OS, I suppose you chose Linux and potential embedded and/or optimized linux like Raspbian on Raspberry Pi.

gSOAP Toolkit Installation

gSOAP Toolkit, Development toolkit for Web Services and XML data bindings for C & C++

A Quick How-To

wsdl2h

We use the gSOAP 'wsdl2h' WSDL parser to obtain the gSOAP header file specification of a Web service from a WSDL document.

To obtain a header file from a WSDL document, run 'wsdl2h' on a WSDL:

wsdl2h -o outfile.h infile.wsdl

where infile.wsdl can be a resident WSDL file or a Web location of the WSDL. The outfile.h is the generated output file.

For example:

wsdl2h -o XMethodsQuery.h http://www.xmethods.net/wsdl/query.wsdl

This generates the header file XMethodsQuery.h. The header file defines the service in a more familiar C/C++ header format that you can browse within your IDE.

soapcpp2 : gSOAP Compiler

Now, we run the gSOAP compiler 'soapcpp2' on the gSOAP header file to produce the source code to implement the client application. The 'soapcpp2' stub and skeleton compiler generates proxies (and RPC stubs) for your client application as follow :

The gSOAP runtime library provides a transport layer with an HTTP stack on top of TCP/IP as well as secure SSL and DIME/MIME attachment support. To develop a service application, run the gSOAP 'wsdl2h' parser on a WSDL to create a gSOAP header file. The header file is compiled with the 'soapcpp2' compiler as follow:

The 'soapcpp2' compiler generates the C/C++ Web service skeletons. You can also take a legacy C/C++ application and develop a service simply by entering the C/C++ Web service method operations and data types into a header file. The 'soapcpp2' compiler generates the source code for your project and produces a WSDL to advertize your Web service .

Tutorial : Getting Start with gSOAP

Here you can find a complete step by step tutorial to write yuor first SOAP and REST Web Services, from Hello World to the classical Calc :

Getting Start with gSOAP

Publish the WSDL of your web service using gSOAP

In HTTP GET Support ... find an example that produces a WSDL file upon a HTTP GET with path ?wsdl

int http_get(struct soap *soap)
{
   FILE *fd = NULL;
   char *s = strchr(soap->path, '?');
   if (!s || strcmp(s, "?wsdl"))
      return SOAP_GET_METHOD;
   fd = fopen("myservice.wsdl", "rb"); // open WSDL file to copy
   if (!fd)
      return 404; // return HTTP not found error
   soap->http_content = "text/xml"; // HTTP header with text/xml content
   soap_response(soap, SOAP_FILE);
   for (;;)
   {
      size_t r = fread(soap->tmpbuf, 1, sizeof(soap->tmpbuf), fd);
      if (!r)
         break;
      if (soap_send_raw(soap, soap->tmpbuf, r))
         break; // can't send, but little we can do about that
   }
   fclose(fd);
   soap_end_send(soap);
   return SOAP_OK;
} 

Test the interoperability

After deploying the calc WS-SOAP, test its interoperability with a typical WCF client.

Use gSOAP for monitoring

Of course, this low level programming approach is not very useful to write classical services without any system challenge.

On the other hand, as soon as you want to access to specific Operating System and even kernel API, such an approach seems interesting.

To illustrate that choose your own prefered POSIX function and test it through a Web Service gSOAP. If you don't have imagination try getpid() .

cours/service_oriented_computing_and_web_services/2017-2018/gsoap.txt · Dernière modification: 2018/04/12 15:35 par tigli