gSOAP 2.5.1 (and later) WS-I Basic Profile 1.0a, 1.1, and 1.2 Compliance Report

The gSOAP 2.5.1 (and later) compiler automatically reports Basic Profile compliance warnings to inform the developer about potential interoperability problems before building an application and deploying it. Below follows a check list for application developers. Items indicated in Yellow and Red needs user's attention.
The 1.0 report lists the compliance status of the toolkit with the 1.0a recommendations.
The 1.1 report lists the compliance status of the toolkit with the 1.1 recommendations.
The 1.2 report lists the compliance status of the toolkit with the 1.2 recommendations.

Legend:
passedCompliance is guaranteed
passedCompliance is guaranteed, but some actions MAY be required by developers
supportedIn principle supports the compliance claim, but REQUIRES some customization by developers
N/ANot applicable

Compliance with 1.0a Recommendations:
ResolutionStatusCommentAction
R0001passedAutomated
R0002passedNote: conformance claims are not included in messages and documents
R0003passedNote: conformance claims are not included in messages and documents
R0004passedNote: conformance claims are not included in messages and documents
R0005passedNote: conformance claims are not included in messages and documents
R0006passedNote: conformance claims are not included in messages and documents
R0007passedNote: conformance claims are not included in messages and documents
R1000passedAutomated
R1001passedAutomated
R1002passedAutomated
R1003passedAttributes in Fault detail element are ignorednote 1
R1004passedAutomated
R1005passedApplications MUST use literal encodingnote 2
R1006passedAutomated
R1007passedAutomated
R1008passedAutomated
R1009passedAutomated
R1010passedAutomated
R1011passedApplications MUST use literal encoding or SOAP 1.2note 2
R1012passedAutomated
R1013passedAutomated
R1014passedAutomated
R1015passedRelaxed requirement: gSOAP supports SOAP 1.1 and 1.2 Envelopes
R1016passedNote: xml:lang attribute is accepted but not used
R1017passedAutomated
R1018passedAutomated
R1025passedSOAP Header information MUST be processed first before handling Body datanote 4
R1027passedAutomated
R1028passedAutomated
R1029passedAutomated
R1030passedAutomated
R1031passedAutomated
R1107passedAutomated
R1108passedAutomated
R1109passedAutomated
R1110passedAutomated
R1111passedAutomated
R1112passedAutomated
R1113passedAutomated
R1114passedNote: HTTP 405 code is not used by gSOAP (applications MAY use HTTP 405)
R1115passedNote: HTTP 415 code is not used by gSOAP (applications MAY use HTTP 415)
R1119passedAutomated
R1120passedAutomated
R1121passedAutomated
R1122passedApplications SHOULD NOT use HTTP cookies. gSOAP uses older RFC2109 (compliance requires RFC2965)note 5
R1123passedAutomated
R1124passedAutomated
R1125passedAutomated
R1126passedAutomated
R1130passedAutomated
R1131supportedClient applications SHOULD redirect to new endpoint address upon receiving HTTP 307 code (note: HTTP 307 security flaws are not addressed by BP1.0)note 6
R1132passedAutomated
R1140passedAutomated
R1141passedAutomated
R2001passedAutomated
R2002passedAutomated
R2003passedAutomated
R2004passedAutomated
R2005passedAutomated
R2007passedAutomated
R2008passedAutomated
R2009passedAutomated
R2010passedAutomated
R2011passedAutomated
R2020passedAutomated
R2021passedAutomated
R2022passedAutomated
R2023passedAutomated
R2024passedAutomated
R2025passedAutomated
R2026passedAutomated
R2027passedAutomated
R2028passedAutomated
R2029passedAutomated
R2101passedAutomated
R2102passedAutomated
R2105passedAutomated
R2110passedApplications MUST NOT use SOAP arraysnote 3
R2111passedApplications MUST NOT use SOAP arraysnote 3
R2112passedApplications MUST NOT use SOAP arraysnote 3
R2113passedApplications MUST NOT use SOAP arraysnote 3
R2114passedAutomated
R2201passedAutomated
R2202passedAutomated
R2203passedAutomated
R2204passedAutomated
R2205passedAutomated (gSOAP 2.5.1 and higher)
R2206passedAutomated
R2207passedAutomated
R2208passedAutomated
R2209passedAutomated
R2210passedAutomated
R2211passedAutomated
R2301passedAutomated
R2302passedAutomated
R2303passedAutomated
R2304passedAutomated. Note: Server applications MUST NOT support polymorphic operations (polymorphic data is OK)
R2305passedAutomated
R2306passedAutomated
R2401passedAutomated
R2701passedAutomated
R2702passedAutomated
R2705passedApplications MUST use literal encodingnote 2
R2707passedNote: SOAP Fault, Header, Headerfault are literal
R2709passedAutomated
R2710passedAutomated
R2711passedServer applications MAY NOT use the same endpoint address for different WSDL service portsnote 8
R2712passedDeveloper: need to look into details
R2714passedgSOAP supports one-way synchronous (interoperable) and asynchronous callsnote 9
R2716passedAutomated
R2717passedAutomated
R2718passedAutomated
R2719passedAutomated
R2720passedAutomated
R2721passedAutomated
R2722passedAutomated
R2723passedApplications MUST use literal encodingnote 2
R2724passedAutomated
R2725passedAutomated
R2726passedAutomated
R2727passedgSOAP supports one-way synchronous (interoperable) and asynchronous callsnote 9
R2728passedAutomated
R2729passedAutomated
R2735passedAutomated
R2737passedAutomated
R2738passedApplications MUST send all of the designated SOAP Headers for those operations that have SOAP Header data associated with themnote 7
R2739passedNote: extra SOAP Headers are ignored and mustUnderstand rules are implemented
R2740passedAutomated
R2741passedAutomated
R2742passedNote: extra SOAP detail elements are handled
R2743passedAutomated
R2744passedAutomated
R2745passedAutomated
R2747passedAutomated
R2748passedAutomated
R2749passedAutomated
R2750passedAutomated
R2751passedAutomated
R2752passedAutomated
R2753passedAutomated
R2754passedAutomated
R2800passedAutomated
R2801passedAutomated
R3002passedNote: user must set uddi:tModel to WSDL as the description language
R3003passedNote: user must ensure uddi:tModel represents a conformant Web service type MUST be categorized using the uddi:types taxonomy and a categorization of "wsdlSpec".
R3004passedNote: requires user attention.
R3005passedNote: requires user attention.
R3010passedNote: user must ensure that uddi:tModel representing a conformant Web service type MUST follow V1.08 of the UDDI Best Practice for Using WSDL in a UDDI Registry.
R3011passedNote: requires user attention.
R3020passedNote: requires user attention.
R3021passedNote: requires user attention.
R3030passedNote: requires user attention.
R3100passedNote: requires user attention.
R4001passedAutomated
R4002passedAutomated
R4003passedAutomated
R4004passedAutomated
R5000passedAutomated
R5001passedAutomated

Compliance with new 1.1 Recommendations:
WS-I 1.1 retains most of the 1.0a recommendations with additions. It removes 0004-0007, 1010, 1012, 1018, 1110, 2020-2021, 2024, 2728, 3004-3005, 3020-3021, 3030, and 4001.
ResolutionStatusCommentAction
R9980passedAutomated
R1032yellowDoc/lit and rpc/lit styles only (RPC encoding uses SOAP-ENV:encodingStyle in body element)
R1033passedAutomated
R1034passedAutomated
R1127passedAutomated
R2803passedUser should not declare relative URI in //gsoap schema import
R4005passedAutomated
R2030passedAutomated
R2212passedAutomated
R2213passedAutomated
R2214supportedRPC literal messages that are empty (the parts attribute of soapbind:body is an empty string) must be manually coded.
R2755passedAutomated

Compliance with new 1.2 Recommendations:
ResolutionStatusCommentAction
R9701passedAutomated
R4001passedAutomated
R1010passedAutomated
R1012passedAutomated
R1018passedAutomated
R1019passedAutomated
R9980passedAutomated
R9981passedAutomated
R1015passedAutomated
R1014passedAutomated
R1008passedAutomated
R1009passedAutomated
R1033passedAutomated
R1011passedAutomated
R1005passedAutomated. Note: applies to doc/lit style only
R1006passedAutomated. Note: applies to doc/lit style only
R1007passedAutomated. Note: applies to doc/lit style only
R1013passedAutomated. Note: applies to SOAP 1.1 only
R1017passedAutomated
R1032passedAutomated. Note: applies to doc/lit style only
R1025passedAutomated
R1027passedAutomated
R1028passedAutomated
R1029passedAutomated
R1030passedAutomated
R1107passedAutomated
R1000passedAutomated
R1001passedAutomated. Note: when specifying the SOAP_ENV__Detail struct contents manually without the aid of wsdl2h, the user must take care to use qualified members
R1002passedAutomated
R1003passedTo process SOAP Fault Detail element attributes, use wsdl2h option -d to populate a DOM list of attributes
R1016passedAutomated
R1035passedAutomated. Note: requires the use of import/wsa5.h for WS-Addressing
R1036passedAutomated. Note: requires the use of import/wsa5.h for WS-Addressing
R1142passedUser should ensure wsa:Action is properly set using the soap_wsa_request (doc/wsa/html/wsa.html)
R1043passedAutomated
R1144passedUser should ensure wsa:Action is properly set using the soap_wsa_request (see gsoap/doc/wsa/html/wsa.html)
R1141passedAutomated
R1140passedAutomated
R1132passedAutomated
R1108passedAutomated
R1109passedAutomated
R1119passedAutomated
R1127passedAutomated
R1124passedAutomated
R1111passedAutomated
R1112passedAutomated
R1130passedAutomated. Note: user should set soap->endpoint and return 307 from remote method operation at the server side
R1131passedTo allow redirects at the client side, user should check for soap->error == 307 and connect to soap->endpoint
R1125passedAutomated
R1113passedAutomated
R1114passedAutomated
R1115passedUser should check soap->http_content string at the client side (after the call) and server side (inside remote method call) to enforce this constraint
R1126passedAutomated
R1120passedAutomated. Note: requires compiler switch -DWITH_COOKIES and extras/ckdb.h to implement HTTP state management (cookies)
R1122passedAutomated
R1121passedAutomated
R1123passedAutomated
R1150passedAutomated. Note: WS-Addressing plugin
R1151passedAutomated. Note: WS-Addressing plugin
R0001passedUser should make the WSDL available online, for example by implementing the soap->fget method to return this document (see gsoap/soapdoc2.html section 18.10)
R2028passedAutomated
R2029passedAutomated
R2001passedAutomated
R2803passedUser should not declare relative URI in //gsoap schema import
R2002passedAutomated
R2003passedAutomated
R2004passedAutomated
R2009passedAutomated
R2010passedAutomated
R2011passedAutomated
R2007passedAutomated
R2008passedAutomated
R2022passedAutomated
R2023passedAutomated
R4004passedAutomated
R4005passedAutomated
R4002passedAutomated
R4003passedAutomated
R2005passedAutomated
R2005passedAutomated
R2025passedAutomated
R2026passedAutomated
R2027passedAutomated. Note: 2.7.15 and later
R2101passedAutomated. Note: 2.7.14 and later
R2105passedAutomated
R2110passedAutomated. Note: user should not use RPC encoding and avoid SOAP encoded arrays
R2111passedAutomated. Note: user should not use RPC encoding and avoid SOAP encoded arrays
R2112passedAutomated. Note: user should not use RPC encoding and avoid SOAP encoded arrays
R2113passedAutomated. Note: user should not use RPC encoding and avoid SOAP encoded arrays
R2114passedAutomated
R2115passedAutomated
R2116passedAutomated
R2201passedAutomated
R2210passedAutomated
R2202passedAutomated
R2203passedAutomated
R2211passedAutomated
R2207passedAutomated
R2204passedAutomated
R2208passedAutomated
R2212passedAutomated
R2213passedAutomated
R2214supportedRPC literal messages that are empty (the parts attribute of soapbind:body is an empty string) must be manually coded.
R2205passedAutomated
R2209passedAutomated
R2206passedAutomated
R2301passedAutomated
R2302passedAutomated
R2303passedAutomated
R2304passedAutomated. Note: operation overloading is not allowed. When manually specifying a service in a header file, user should avoid remote operation overloading (wsdl2h handles overloading just fine but functionality is only guaranteed at the client side)
R2305passedAutomated
R2306passedAutomated
R2401passedAutomated
R2701passedAutomated
R2702passedAutomated
R2705passedAutomated. Note: user should not specify SOAP RPC encoding when declaring a service (doc/lit is the default)
R2706passedAutomated
R2709passedAutomated
R2710passedAutomated
R2711passedAutomated
R2712passedAutomated
R2714passedAutomated
R2727passedAutomated
R2716passedAutomated
R2717passedAutomated
R2726passedAutomated
R2718passedAutomated
R2719passedAutomated
R2740passedAutomated
R2741passedAutomated
R2742passedAutomated
R2743passedAutomated
R2720passedAutomated
R2749passedAutomated
R2721passedAutomated
R2754passedAutomated
R2722passedAutomated
R2723passedAutomated
R2707passedAutomated
R2724passedAutomated
R2725passedAutomated
R2729passedAutomated
R2735passedAutomated
R2755passedAutomated
R2737passedAutomated
R2738passedAutomated
R2739passedAutomated
R2753passedAutomated
R2751passedAutomated
R2752passedAutomated
R2744passedAutomated
R2745passedAutomated
R2747passedAutomated
R2748passedAutomated
R2800passedAutomated
R2801passedAutomated
R3100passedUDDI is not automated: user is responsible for ensuring compliance of the registry content
R3102passedUDDI is not automated: user is responsible for ensuring compliance of the registry content
R3103passedUDDI is not automated: user is responsible for ensuring compliance of the registry content
R3110passedUDDI is not automated: user is responsible for ensuring compliance of the registry content
R3111passedUDDI is not automated: user is responsible for ensuring compliance of the registry content
R5000passedAutomated. Note: SSL must be enabled (compile with -DWITH_OPENSSL and link openssl) to satisfy requirement
R5001passedAutomated
R5010passedAutomated


Note 1
Specify the required attributes in the SOAP_ENV__Detail struct:
struct SOAP_ENV__Detail
{ @char *someAttribute; // the attribute
  int __type;
  void *value;
  _XML __any;
};
or use a list of DOM attributes (see gsoap/doc/dom/html/index.html):
#import "dom.h"
struct SOAP_ENV__Detail
{ @xsd__anyAttribute anyAttribute; // DOM list of attributes
  int __type;
  void *value;
  _XML __any;
};
Note 2
Existing applications that use SOAP encoding and that are developed from a WSDL specification (e.g. using wsdl2h) MUST use SOAP encoding and SHOULD NOT use literal encoding to avoid communication protocol mismatches. For new applications however, SOAP doc/lit SHOULD be considered for compliance with Basic Profiles. See the gSOAP documentation on the //gsoap ns service encoding: and //gsoap ns service method-encoding: directives.
Note 3
Existing applications that depend on SOAP arrays and that are developed from a WSDL specification (e.g. using wsdl2h) MUST use the SOAP arrays. For new applications however, other data containers should be considered, such as STL vectors or non-SOAP arrays specified as:
struct ns1__FloatArray
{ int __size; // array size
  float *item; // pointer to first array element
};
This defines a new ns1 schema complexType.
Note 4
Applications can use a get() method with the SOAP Header class or the application MUST make sure to process the known header info in the service method implementation before processing the data of the SOAP body.
Note 5
Applications MAY use cookies but SHOULD NOT rely on them for state management.
Note 6
See the gSOAP documentation on HTTP 307 Temporary Redirect.
Note 7
Set the soap.header to the relevant Header struct/class instantiation containing the mandatory header info. The header info can be found with the service method definitions in the gSOAP header file.
Note 8
Avoid using the same endpoint for different services. In a gSOAP header file, all service methods associated with a service namespace can use the same endpoint address. However, service methods in different service namespaces SHOULD NOT use the same endpoint address.
Incorrect:
//gsoap ns1 service endpoint: http://xyz
int ns1__method1(...);
int ns1__method2(...);
...
//gsoap ns2 service endpoint: http://xyz
int ns2__method1(...);
int ns2__method2(...);
...
Correct:
//gsoap ns1 service endpoint: http://abc
int ns1__method1(...);
int ns1__method2(...);
...
//gsoap ns2 service endpoint: http://xyz
int ns2__method1(...);
int ns2__method2(...);
...
Note 9
One-way messaging in gSOAP is supported in two different modes: synchronous request-response message pairs and asynchronous one-way message passing. The former mode is interoperable. However, the latter mode is used by default in gSOAP because it is more flexible by enabling customization of more intricate message exchange patterns. Some customization is necessary to achieve interoperability for one-way messages, which are defined as a function prototype with void response parameter in the gSOAP header file, for example:
int ns__event(enum ns__Event event, void);
Client-side C code:
if (soap_send_ns__event(soap, eventNo) != SOAP_OK || soap_recv_empty_response(soap) != SOAP_OK)
  soap_print_fault(soap, stderr);
Client-side C++ code using proxy:
Event server;
if (server.ns__event(eventNO) != SOAP_OK || soap_recv_empty_response(server.soap) != SOAP_OK)
  soap_print_fault(server.soap, stderr);
Server-side code:
int ns__event(struct soap *soap, enum ns__Event event)
{ ...
  return soap_send_empty_response(soap); // use this instead of SOAP_OK
}