JBoss Community

SoapAction not required?

created by Worrow W in JBoss Web Services - View the full discussion

Hi,

 

I got some Web Service running in Jboss 4.2.3GA.  Tried to build a console client that use the Service with SoapMessage.

Here is the code below:

// --------------------------------------------------------------------------------------------------------------------------------------------------------------

SOAPMessage requestMsg = SoapUtils.emptyMessage();

  SOAPPart soapPart = requestMsg.getSOAPPart();
  SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
  SOAPBody soapBody = soapEnvelope.getBody();
  SOAPHeader soapHeader = soapEnvelope.getHeader();
  soapEnvelope.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
   requestMsg.getMimeHeaders().addHeader("SOAPAction", "urn:enquireDataset");
  Name bodyName = soapEnvelope.createName("enquireDataset", "fd",
    "http://impl.ws.eadi.com");
  SOAPBodyElement bodyElement = soapBody.addBodyElement(bodyName);
  // userID
  Name userID_soap = soapEnvelope.createName("userID", "fd",
    "http://impl.ws.eadi.com");
  SOAPElement soapElement = bodyElement.addChildElement(userID_soap);
  soapElement.addTextNode(userID);
  // password
  Name password_soap = soapEnvelope.createName("password", "fd",
    "http://impl.ws.eadi.com");
  soapElement = bodyElement.addChildElement(password_soap);
  soapElement.addTextNode(password);
  // logicalDatasetName
  Name logicalDatasetName_soap = soapEnvelope.createName(
    "logicalDatasetName", "fd", "http://impl.ws.eadi.com");
  soapElement = bodyElement.addChildElement(logicalDatasetName_soap);
  soapElement.addTextNode(logicalDatasetname);
// --------------------------------------------------------------------------------------------------------------------------------------------------------------

When I called the service, Jboss server threw:

10:27:56,125 ERROR [[AxisServlet]] Servlet.service() for servlet AxisServlet thr

ew exception

java.lang.StringIndexOutOfBoundsException: String index out of range: -1

        at java.lang.String.substring(String.java:1938)

But after I  replaced the SoapAction line with 'requestMsg.getMimeHeaders().addHeader("Content-Type", "text/xml");', it works fine.  What is the reason behind this?  Is the value of "SOAPAction" caused the problem[I copied it from wsdl, action tag]?  Or in some case, SoapAction is not required at all?

 

Any help will be really appreciated!  Thanks in advance.

Reply to this message by going to Community

Start a new discussion in JBoss Web Services at Community