Web Services

A Web service is a method of communication between two electronic devices over a network. It is a software function provided at a network address over the Web with the service always on as in the concept of utility computing. A web service has an interface described in Web Services Description Language (WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP (Simple Object Access Protocol) messages. There are two major classes of Web services: REST-compliant web services, and Arbitrary web services.

Share tech news, updates, or what's on your mind.

Sign up to Post

Recently got frustrated trying wsimport on several old SOAP sites. Found out its all been deprecated so no SOAP sites to run wsimport on.
Can anyone give me a few just to see that wsimport is working as I expect it should?
I would appreciate a chance to test these things also .
So other than web pages processing JAX-RS(Restful) links exactly what if anything is equivalent to WSDLs in the JAX-RS world
I mean put, post, get delete insert? httpd protocol.
Help ASAP
0
Get your problem seen by more experts
LVL 12
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

sample.phpRunning, or utilising PHP scripts from VB6.

I have a large VB6 application which I developed over many years, and has been operating for many many years now.

My software has no issue consuming Web Services using MSXML2 to call various XML and JSON feeds.

However, in this instance, I need to communicate back and forward, and I'm slightly stumped as to best way to move forward. I've been presented with a PHP code which (a) has a login function to get a authorisation code, and (b) using that authorisation code, I need to send variables to submit a transaction, which supposedly will return a response.

I've attached the basic (modified) PHP script, and I'm looking for "nudges" in the right direction. The variables needed to pass to the login function, and order function are contained in my vb6 software.

Much Appreciated any assistance.
0
Is there any open source tool to perform a web service load test?
0
I have been tasked with finding out why some of the PDFs we receive as attachments through our web service results in garbled font.  I am an Oracle developer normally so this is a completely new area to me, and I don't even know what to google for.

We work with a third party vendor.  Providers upload documents to their site as either PDFs or Word documents.  The Word documents are converted to PDFs.  When their administrators review these documents after they are uploaded, they look fine to them, but after we receive them through our web service, the text overlaps itself.  Not all of them, only a few of them and seemingly from specific providers, who are customers of the third party, not our customers directly (so I can't ask them what they heck they are doing).  

If you look at the attachment, the first two examples show where there is a random letter in the middle of the sentence but it actually belongs at the end of the line.

In the third example, if you start pulling out the letters in red, you get, “year old female who was seen” and then if you pull out the rest of the letters you get “at the office today for follo”.  

I know very little about web services and almost nothing about the creation of PDFs.  Any ideas on where to start looking, and what terminology I should be using when I research?

Thank you!
Cali
garbled_font.docx
0
I am very new to asynchronous programming, I am using the amazon web services SDK (AWSSDK) in C#. More precisely the AWSSDK.SimpleMail SDK  

I am creating a function to run on the AWS Lambda function platform. This requires the use of .NET Core which apparently means everything needs to be asynchronous.

I am trying to send an email using the SAWS Simple Email service. There is a method in the AmazonSimpleEmailServiceClient class called SendMailAsync

I am not sure if I am calling this method correctly as it doesn't seem to work.  I'm getting a Task Cancelled Response.

I have attached my function code and here is the output of a log I have captured.

If anyone can help me out and point me in the right direction, that would be appreciated.

Async Error message: System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at System.Net.Http.HttpClient.<FinishSendAsyncUnbuffered>d__59.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at 

Open in new window

0
I created a web service with jax-rpc 1.1 for a QCM. The main class is defined as:

public class QCM_WebService  implements Serializable{

    public void fillQcm (QCMUserResponse [] userResponse) {

    }
 }
Class QCMUserResponse:

class QCMUserResponse implements Serializable{
     private int questionID;
     private QcmResponse [] qcmResponseList;    
 }
Class QcmResponse:

class QcmResponse implements Serializable{

    private int responseID;
    private String response;
}
This is an example of SoapUI request generated by the WSDL of this service:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:ws="http://org.example" xmlns:qcm="http://com.Test">
  <soapenv:Header/>
 <soapenv:Body>
  <ws:fillQcm>
     <!--Zero or more repetitions:-->
     <ws:userResponse>
        <qcm:questionID>14</qcm:questionID>
        <!--1 or more repetitions:-->
        <qcm:qcmResponseList>
           <qcm:responseID>1</qcm:responseID>
           <qcm:response>true</qcm:response>
        </qcm:qcmResponseList>
        <qcm:qcmResponseList>
           <qcm:responseID>2</qcm:responseID>
           <qcm:response>false</qcm:response>
        </qcm:qcmResponseList>
            <qcm:qcmResponseList>
           <qcm:responseID>3</qcm:responseID>
           <qcm:response>false</qcm:response>
        </qcm:qcmResponseList>
     </ws:userResponse>
    </ws:fillQcm>
 </soapenv:Body>
</soapenv:Envelope>
When I try to test…
0
can anyone explain how to create REST API using PHP
0
We have an own PKI.
I have created a new certificate for some web services.
I just want to get rid of the cert warnings when I open the site.

When I open the site with IE all is fine and no warnings.
But with CHROME I still have this warnings.

Do you know what I can do ?
0
I am considering building an app  which one of the functionality is to connect to the clients bank accounts and obtain some necessary information . How can I connect to the bank account?Do most banks expose web services to consume?What about security?And what about the legality of all this?sorry I am new to this area I have been programming for a while now though but I have never built a web app where you are required to connect to the bank accounts.Thanks in advance
0
The printer in question is a Hewlett-Packard HP LaserJet MFP M426fdw.

The IP is 192.168.3.2
Last time I accessed web services I remember that this IP was set to static. I turned off IPV6 from the printer settings because some users were having issues scanning/printing. The weird part is that the LAN (wired) is in the 10.0.x.x`s for the workstation and then there is a WiFi network which when we connect it appears to be in the 192.x.x.x scheme.
Any pointers would be appreciated.
Edit:
Pinging 192.168.3.2 with 32 bytes of data:
Reply from 192.168.3.2: bytes=32 time<1ms TTL=254
Reply from 192.168.3.2: bytes=32 time<1ms TTL=254



Windows IP Configuration

  Host Name . . . . . . . . . . . . : R****o-D-01
  Primary Dns Suffix . . . . . . . :
  Node Type . . . . . . . . . . . . : Hybrid
  IP Routing Enabled. . . . . . . . : No
  WINS Proxy Enabled. . . . . . . . : No
  DNS Suffix Search List. . . . . . : h***1.il.comcast.net

Wireless LAN adapter Local Area Connection* 1:

  Media State . . . . . . . . . . . : Media disconnected
  Connection-specific DNS Suffix . :
  Description . . . . . . . . . . . : Microsoft Wi-Fi Direct Virtual Adapter
  Physical Address. . . . . . . . . : B*-A*-*6-D*-D*-*0
  DHCP Enabled. . . . . . . . . . . : Yes
  Autoconfiguration Enabled . . . . : Yes

Wireless LAN adapter Local Area Connection* 11:

  Media State . . . . . . . . . . . : Media disconnected
  Connection-specific DNS Suffix . :
  Description . . . . . . …
0
Improve Your Query Performance Tuning
Improve Your Query Performance Tuning

In this FREE six-day email course, you'll learn from Janis Griffin, Database Performance Evangelist. She'll teach 12 steps that you can use to optimize your queries as much as possible and see measurable results in your work. Get started today!

C# web service calling another .NET assembly using reflection
I use a web service to a run-time assembly call using C# Reflection.
The assembly is in Binary format in database. All records contains a binary data which is almost same in structure. It has a Start method in a class called 'MyAssembly'
First I loads assembly object using  the Binary data, then finds the type - MyAssembly from it and then calls a method 'Start'. The start will write the logs into a directory. This works entirely fine when we call from an executable. All executables goes into separate process ID and the results are getting.

Then calling the same step using a Web service hosted in IIS, the results are getting messed up. Simultaneous calls to the same method gets the results into different different calls.
Example: Method1 called using web service and the logs are writing into File1.
Method1 again called using different arguments and the logs are writing into File2.
When calling method1 two times at the same point of time using web service, gets the logs messed up, File1 details are showing in File2 and File2 are in File1. It is not only the logs issue bug also the execution are getting wrong that inner methods are not getting proper outputs and return values. Everything messed up.

When the web service is calling EXE program (Which is not allowed in so many conditions) - That is without finding out the method using reflection and then calling it, it just calls an exe program using …
0
Our HRIS system is hosted by Ultimate Software.  I have a need to pull via their WEB API our employee database from them.

Their API works great using C#.  No problems.

The question I have is regarding WEB API pagination.  We have over 6,000 employees, but to get the records, I have use paging properties, which means I can only get those records in chunks of about 100 each.  This is REALLY untenable for a production system.

Does anyone know how I can pull an unlimited number of records from a WEB API call using C#?

The code snippet below is where I have to set the query and page properties to make the API work.  I can post the whole program I used to test with, if it will help.

Thank you in advance,

                   // Create a query object to find the employees:
                    var employeeQuery =
                        new EmployeeQuery
                        {
                            // Set one or more properties to search:
                            LastName = "LIKE (g%)",
                            FullOrPartTime = "=F",

                            // Set paging properties:
                            PageSize = "10",
                            PageNumber = "1"
                        };

Open in new window

0
We are doing migration from exchange 2010 to exchange 2016. I need to know how to migrate shared mailboxes , DL and other exchange web services or any other important information provided by any article will help
0
I'm getting the following error:
<soap:Fault xmlns:env="http://www.w3.org/2003/05/soap-envelope">
      <faultcode>env:Sender</faultcode>
      <faultstring>Invalid version of SOAP in the request. SOAP 1.2 must be used. </faultstring>
    </soap:Fault>

Open in new window


How do I pro grammatically or using a config file change the SOAP to 1.2?

I have tried putting this line on the interface file but does not seem to be working. @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)

I'm currently call the service like this:
LoggingInInterceptor loggingInInterceptor = new LoggingInInterceptor();
            loggingInInterceptor.setPrettyLogging(true);
            LoggingOutInterceptor loggingOutInterceptor = new LoggingOutInterceptor();
loggingOutInterceptor.setPrettyLogging(true);

CORETransactionService service = new CORETransactionService();
CORETransaction port = service.getCoreSoapPort();

Client client = ClientProxy.getClient(port);
Endpoint endpoint = client.getEndpoint();

endpoint.getInInterceptors().add(loggingInInterceptor);
endpoint.getOutInterceptors().add(loggingOutInterceptor);

Map<String, Object> ctx = ((javax.xml.ws.BindingProvider)port).getRequestContext();

Open in new window

0
I'm trying to set the SOAP Request to 1.2.  So with some research I see that you can accomplish this using the following code.

Service service = Service.create(servName);
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, ServerMisc.DOCLIT_CODEFIRST_URL)

Open in new window


Where do I get portName from?
0
I have a java web service that is supposed to start automatically when it is deployed.  For some unknown reason it does not.  I am seeking guidance on how to figure out why it is not starting automatically.  I am using jdk 1.8, jax ws 2.2.6, tomcat 8 on rhel 7.  Here is what I have in the web.xml file for the service servlet:
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>MiscService</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MiscService</servlet-name>
        <url-pattern>/MiscService</url-pattern>
    </servlet-mapping>

Open in new window


Is there something else I am supposed to do other than put the number 1 in the load on startup tag?  Everything that I have googled said that this is all I need to do.  My server admin guy is not much help and if there is something on the server side that needs to be done can anybody please tell me that.  If there is something else that I need to put in my code then please let me know.

I do not have this issue in the development or staging environments but I can say that the one difference in the production environment, which is where I am having this issue, is that the web service is served via a load balancer.  The request goes through one of two regular apache web server to tomcat.

HELP!!!
0
I'm trying to connect to a service outside our firewall but on our servers and I'm getting the following error:

error
Here is the code:

Code
Not sure how I get around this? This is all new to me?

Thanks!
0
I have been asked to stand up a weighted search appliance for a company.  The decision was to use SOLR to create the search tool so they can use the associated REST API for searches and recommendations.

I'm am still beginning in SOLR and have to ask a basic architecture question.  I have a table with 220 elements, 130 Million record strong.  I grow 5 million a year.

Does this become a Hadoop solution?  or can this still be done with a single SOLR engine?  I need to know which direction to start with so I do this right

Thanks much.
0
I'm using EncryptedXML to decrypt a SOAP message.  I'm loading the certificate manually and trying to decrypt the message.  But I'm getting the following error:

Unable to retrieve the decryption key.

Open in new window


Here is my code:
stream.Position = 0;
var doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(stream);

var clientCertEnc = new X509Certificate2(@"C:\certificates\xxxxxt.pfx", "xxxxxx");
var privateKeyRSAA = (RSACryptoServiceProvider)clientCertEnc.PrivateKey;

var exml = new EncryptedXml(doc);
exml.AddKeyNameMapping("KeyIdentifier", privateKeyRSAA);
exml.DecryptDocument();

Open in new window


Here is my xml:
<s:Envelope 
        xmlns:s="http://www.w3.org/2003/05/soap-envelope" 
        xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <s:Header>
            <VsDebuggerCausalityData 
                xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo4tYpt6X40FEk+VSAe5mc8MAAAAAP497cBuXfk+uFIOY80O0iuLtIW56q7hLktgVYPhbnHMACQAA
            </VsDebuggerCausalityData>
            <o:Security s:mustUnderstand="1" 
                xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                <o:BinarySecurityToken u:Id="uuid-10490fb0-8ee0-4a4c-a8db-77242c9a3b7f-2" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" 

Open in new window

0
IT Degree with Certifications Included
IT Degree with Certifications Included

Aspire to become a network administrator, network security analyst, or computer and information systems manager? Make the most of your experience as an IT professional by earning your B.S. in Network Operations and Security.

I'm using C# to call a Java Webservice.  Fiddler gives me a status of 200. So my call to the service is good.  But something in the .NET does not like my MTOM message.  Any ideas?  Here are all the details.  

I'm getting this error:
MTOM messages must have type 'application/xop+xml'.

Open in new window


The stack trace says:
Server stack trace: 
   at System.ServiceModel.Channels.MtomMessageEncoder.MtomBufferedMessageData.TakeXmlReader()
   at System.ServiceModel.Channels.BufferedMessageData.GetMessageReader()
   at System.ServiceModel.Channels.BufferedMessage..ctor(IBufferedMessageData messageData, RecycledMessageState recycledMessageState, Boolean[] understoodHeaders, Boolean understoodHeadersModified)
   at System.ServiceModel.Channels.MtomMessageEncoder.ReadMessage(ArraySegment`1 buffer, BufferManager bufferManager, String contentType)
   at System.ServiceModel.Channels.HttpInput.DecodeBufferedMessage(ArraySegment`1 buffer, Stream inputStream)
   at System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream)
   at System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(HttpRequestMessage httpRequestMessage, Exception& requestException)
   at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at 

Open in new window

0
I am requesting a web service through an xml, I verify the answer with the Fiddler tool and it returns an Http 200, but the answer as such does not return the information that the web service should send me but it returns the wsdl of the same. I do not know if you are making any mistakes in the programming, please help me.

private void SendXmlToWebService()
        {            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"C:\inetpub\wwwroot\WsSAt\XmlPeticion.xml");
            StringBuilder rawXml = new StringBuilder();
            rawXml.Append(GetXmlString(xmlDoc));
            PostXml("http://10.181.236.3:9094/axis2/services/SISE_IDC?wsdl", rawXml.ToString());
        }

        static string GetXmlString(XmlDocument xmlDoc)
        {
            StringWriter sw = new StringWriter();
            XmlTextWriter xw = new XmlTextWriter(sw);
            xmlDoc.WriteTo(xw);
            return sw.ToString();
        }

        public void PostXml(string url, string xml)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(xml);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentLength = bytes.Length;
            request.ContentType = "text/xml; charset=utf-8";
            request.Host = "10.181.236.3:9094";
            request.Accept = "gzip,deflate";

            using (Stream requestStream =
0
I am requesting a web service through an xml, I verify the answer with the Fiddler tool and it returns an Http 200, but the answer as such does not return the information that the web service should send me but it returns the wsdl of the same. I do not know if you are making any mistakes in the programming, please help me.
0
I'm using C# to call a Java Web Service.  I'm using Visual Studio 2015 The company gave me wsdl file and I generated the proxy class for wse 3.  I don't know WCF so I did it in wse 3

Here is my  app.config file

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
	</configSections>
	<microsoft.web.services3>
		<security>
			<binarySecurityTokenManager>
				<add valueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">
					<sessionKeyAlgorithm name="AES128" />
					<keyAlgorithm name="RSAOAEP" />
				</add>
			</binarySecurityTokenManager>
			<x509 storeLocation="CurrentUser" />
			<securityTokenManager>
				<add type="Microsoft.Web.Services3.Security.Tokens.EncryptedKeyTokenManager, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" namespace="http://www.w3.org/2001/04/xmlenc#" localName="EncryptedKey">
					<keyAlgorithm name="SHA2" />
				</add>
			</securityTokenManager>
		</security>
		<diagnostics>
			<trace enabled="true" input="InputTrace.webinfo" output="OutputTrace.webinfo" />
			<detailedErrors enabled="true" />
		</diagnostics>
		<policy fileName="wse3policyCache.config" />
		<messaging>
			<mtom clientMode="On" serverMode="always" />
		

Open in new window

0
After using apache and weblogic for more than 10 years(the last working module used is: mod_wl_22), I am ready to set up a replacement system with the newer version of the connector module (mod_wl_24) for our production.

I follow the official documentation from this link:

https://docs.oracle.com/middleware/1221/webtier/develop-plugin/apache.htm#PLGWL395

The server OS is:
root@server90 ~]# uname -a
Linux server90 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 14 20:09:40 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux

Open in new window

Apache version:
[root@server90 ~]# apachectl -version
Server version: Apache/2.4.6 ()
Server built:   Oct 19 2017 14:54:33

Open in new window

APACHE_HOME folder details
[root@server90 httpd]# pwd
/etc/httpd
[root@server90 httpd]# ll
total 8
drwxr-xr-x 2 root root   58 Mar 10 21:58 conf
drwxr-xr-x 2 root root  103 Mar 10 21:56 conf.d
drwxr-xr-x 2 root root 4096 Mar 10 21:42 conf.modules.d
drwxr-xr-x 2 root root 4096 Mar 11 15:31 lib
lrwxrwxrwx 1 root root   19 Feb 22 16:32 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root   29 Feb 22 16:32 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx 1 root root   10 Feb 22 16:32 run -> /run/httpd
[root@server90 httpd]# 

Open in new window

I created a lib folder at the APACHE_HOME folder and copy all the lib files and this connection module(downloaded from Apache foundation website) into this folder
[root@server90 httpd]# cd lib/
[root@server90 lib]# ll
total 138808
-rwxr-xr-x 1 root root  6990875 Mar 10 21:00 libclntshcore.so
-rwxr-xr-x 1 root root  6990875 Mar 10 21:00 libclntshcore.so.12.1
-rwxr-xr-x 1 root root 58793741 Mar 10 21:00 libclntsh.so
-rwxr-xr-x 1 root root 58793741 Mar 10 21:00 libclntsh.so.12.1
-rwxr-xr-x 1 root root   409107 Mar 10 21:00 libdms2.so
-rwxr-xr-x 1 root root  1768370 Mar 10 21:00 libipc1.so
-rwxr-xr-x 1 root root   544150 Mar 10 21:00 libmql1.so
-rwxr-xr-x 1 root root  6747034 Mar 10 21:00 libnnz12.so
-rwxr-xr-x 1 root root   346242 Mar 10 21:00 libons.so
-rwxr-xr-x 1 root root    98521 Mar 10 21:00 libonsssl.so
-rwxr-xr-x 1 root root    72281 Mar 10 21:00 libonssys.so
-rwxr-xr-x 1 root root   567319 Mar 11 15:24 mod_wl_24.so
[root@server90 lib]# 

Open in new window

After that, I added directive for loading the module  into the $APACHE_HOME/conf/httpd.conf file:
[root@server90 httpd]# cd conf
[root@server90 conf]# ll
total 36
-rw-r--r-- 1 root root 11814 Mar 11 00:49 httpd.conf
-rw-r--r-- 1 root root 13077 Oct 19 17:55 magic
-rw-r--r-- 1 root root  4104 Mar 10 21:58 weblogic.conf
[root@server90 conf]# cat httpd.conf 
LoadModule weblogic_module /etc/httpd/lib/mod_wl_24.so

Open in new window

Then verify if this apache web server has included the dynamic sharing module: mod_so.c
[root@server90 conf]# apachectl -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c
[root@server90 conf]# 

Open in new window

the next step is to try to test the syntax of httpd.conf:
[root@server90 conf]# apachectl -t
httpd: Syntax error on line 355 of /etc/httpd/conf/httpd.conf: Cannot load modules/mod_wl_24.so into server: libonssys.so: cannot open shared object file: No such file or directory
[root@server90 conf]# 

Open in new window

it shows some error message:

Open in new window

0
I am new to webservices. I am working on a sample program on the following link
https://www.ibm.com/developerworks/webservices/tutorials/ws-eclipse-javase1/ws-eclipse-javase1.html
When I run the ant script, it is not generating the next package(com.myfirst.wsserver.jaxws). I am not able to proceed further. I am using eclipse. Need help. Thanks.
0

Web Services

A Web service is a method of communication between two electronic devices over a network. It is a software function provided at a network address over the Web with the service always on as in the concept of utility computing. A web service has an interface described in Web Services Description Language (WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP (Simple Object Access Protocol) messages. There are two major classes of Web services: REST-compliant web services, and Arbitrary web services.