The "WebService" app is a generic client of REST web services based on a synchronous request/reply interface protocol using standard HTTP (GET or POST) and XML or JSON respectively as request and response message types accessing any application server as web service provider (e.g. a J2EE servlet as adapter to access IT legacy systems), where the app user interface and managed web services info are configurable from a single XML configuration file, with advanced features such as export to a (configurable) mailing list of sent/received HTTP messages or mapping from nodes of XML/JSON response tree and response fields on user interface through XPATH formulas in order to drill down to response details with custom user interface navigation or handling a web page (e.g. HTML or PDF) as entire response or (for XML response type) single response field with field value identifying the "url" of web page or its "content" (xhtml or encoded with base64 with other mime types, exportable by email).
The app, driven by its XML configuration file (with a subset of parameters configurable from user interface too), manages a set of "applications" (logically grouped into "systems"), where each application, identified by an http URL (e.g. "http://www.myserver.com/myapp") provides a set of "operations" (logically grouped into "services"), where each operation, identified by a path (the ending part of operation URL, e.g. "/myservice/myoperation") corresponds to an HTTP GET or POST request to a web service (having application URL as prefix, e.g. "http://www.myserver.com/myapp/myservice/myoperation") returning as response an XML, a JSON (or to a static XML or JSON file in order to stub the web service before its implementation) or a web page (e.g. HTML or PDF).
Selecting the current "application" the app user interface change itself in order to reflect its services and related operations, handling the entry of request fields, the HTTP (GET or POST) request message sending and the (custom) navigation to response fields corresponding to XML/JSON response tree nodes with mapping through XPATH formulas specified on XML configuration file.
Each "operation" contains its own "request" and "response" message.
Each "request" and "response" message contains the list of its "fields", logically grouped into field "groups".
Each "request field" (including list of values as field type) corresponds to a name=value pair on HTTP request message.
Each "response field" has a "path" attribute representing the XPATH formula to a node of XML/JSON response tree (where an "equivalent" XML is made by app for JSON response) and may contains recursively (with any depth) a list of more field groups or a single field group identified by an XPATH formula to a node of XML/JSON response tree having more occurrences.
If no "response" is specified on XML configuration then the application server response is related to a web page instead of XML or JSON tree.
If a mime-type is specified as value for "type" attribute of a response field (e.g. type="text/html" or type="application/pdf") then field is related to a web page.
Each field can be defined as reference to any another field.
Each application or system can contains an optional list of error codes with related descriptions for error specific popup messages on user interface.
For a detailed example of XML configuration file see http://www.mysvc.it/myapps/webservice/examples.xml