Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
cours:service_oriented_computing_and_web_services:2017-2018:gsoap [2018/04/12 07:24] tigli [Raspbian] |
cours:service_oriented_computing_and_web_services:2017-2018:gsoap [2018/04/12 15:35] (Version actuelle) tigli [How to publish a WSDL of a web service using gSOAP] |
||
---|---|---|---|
Ligne 55: | Ligne 55: | ||
[[https://www.genivia.com/dev.html|Getting Start with gSOAP]] | [[https://www.genivia.com/dev.html|Getting Start with gSOAP]] | ||
+ | |||
+ | |||
+ | ==== Publish the WSDL of your web service using gSOAP ==== | ||
+ | || | ||
+ | [[https://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.10| In HTTP GET Support ...]] find an example that produces a WSDL file upon a HTTP GET with path ** ?wsdl ** | ||
+ | |||
+ | <code> | ||
+ | |||
+ | 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; | ||
+ | } | ||
+ | |||
+ | </code> | ||
==== Test the interoperability ==== | ==== Test the interoperability ==== |