Solved

java client code to send a  SOAP request  and read response from a WSDL url.

Posted on 2010-09-20
6
523 Views
Last Modified: 2016-02-26
A SOAP webservice hosted on a server,
I know wsdl url and what tags to set in request.

Requirement:
 1) I want to set some fields(tags) of soap request.
  2) send the request
3) read the response.
Please point me to the java code to implement the above.

Thanks in Advance
0
Comment
Question by:srinivasp19
  • 2
6 Comments
 
LVL 3

Accepted Solution

by:
tom_sebastian earned 500 total points
ID: 33719609
You can use spring-ws to do this task. You need jars for spring, spring-ws, axiom-api, axiom-impl etc..
Here is a working code using simple hardcoded xml request and prints the response xml. You can use marshaller for JaxB objects instead of plain xml string

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.springframework.ws.client.core.WebServiceTemplate;

public class WebServiceTest {

      /**
       * @param args
       */
      public static void main(String[] args) {
            System.err.println("Test");
            try {
                  String result = processRequest("test1","test2","test3");
                  System.err.println(result);
            } catch (Exception e) {
                  e.printStackTrace();
            }
     

      }

      public static String processRequest(String... parameters) throws Exception {
            WebServiceTemplate webService = new WebServiceTemplate();
            webService.setDefaultUri("<your endpoint url>");
            StringBuffer requestStr = new StringBuffer();
            requestStr.append("<YourRequest>");
            requestStr.append("<Field1>"+parameters[0]+"</Field1>");
            requestStr.append("<Field2>"+parameters[1]+"</Field2>");
            requestStr.append("<Field3>"+parameters[2]+"</Field3>");
            requestStr.append("</YourRequest>");
 
            Source requestPayload = new StreamSource(new ByteArrayInputStream(requestStr.toString().getBytes()));
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            Result responseResult = new StreamResult(bos);
            webService.sendSourceAndReceiveToResult(requestPayload, responseResult);
            return bos.toString();
      }

}

0
 

Author Comment

by:srinivasp19
ID: 33724694
Hi  tom_sebastian,

Thank you for the reply.

I forgot to mention that the wsdl url is https.
How to add username and password for authentication in the SOAP request?.

I Prefer the Java code :
which takes WSDL URL with authentication as input  and get SOAP request xml, (similar to SOAPUI tool)
with the SOAP request xml object , I should set the required tag(paramenter of exposed service)  and  send request.

Thanks in advance.



 
0
 
LVL 3

Expert Comment

by:tom_sebastian
ID: 33726850
Set the username/password in the message sender, then add it to the soap header too
here is a sample code:

//Set the username/password in the message sender
WebServiceTemplate webService = new WebServiceTemplate();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("<username>","<password>");
CommonsHttpMessageSender msgSender = new CommonsHttpMessageSender();
msgSender.setCredentials(credentials);
webService.setMessageSender(msgSender);

......
.......

//add it to the soap header
webService.sendSourceAndReceiveToResult(requestPayload, new WSSEHeaderWebServiceMessageCallback("<username>","<password>"), responseResult);
0
 

Expert Comment

by:charlatanOfBelle
ID: 34255871
you can also Eclipse's webservice client wizard, just specify the wsdl and it does the rest, it auto-geneterates the interface/proxy that you will need to instantiate. For example it will generate a ServiceProxy which would contain the methods that the webservice host has exposed. Another helpful option when you use this, you can opt to generate sample jsp files that you can deploy and will show you how the ServicePRoxy is used. I've used this 3 times already in my career, the last one is for integration with Salesforce.

btw, It uses axis behind the scenes.

http://www.eclipse.org/webtools/community/tutorials/BottomUpAxis2WebService/bu_tutorial.html
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Web Service example 9 139
IIS ISSUE while deploying the web application or web service 2 46
Domain type information 2 47
fiddler with asp.net mvc 2 50
Online collaboration is quickly becoming embedded in the workplace, and its benefits are tangible. See what the current landscape looks like and what the future holds for collaboration tools and the future of work.
In order to have all security and back ups taken care of, WordPress users can sign up for services with WP Engine.
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now