As the error message indicates, you need to add a SOAPAction header to
the HTTP message. In your client code:

        MimeHeaders hd = smsg.getMimeHeaders();
        hd.addHeader("SOAPAction", "urn:yoursoapaction");

See http://users.skynet.be/pascalbotte/rcx-ws-doc/saajpost.htm for a
sample SAAJ client.

Anne

On Thu, Jun 12, 2008 at 12:37 AM, Sandeep Kumar K
<[EMAIL PROTECTED]> wrote:
> I am trying to develop a simple SOAP application using Axis.
>
> I deployed axis in Apache Tomcat 6.
>
> My Server code is : MessageService.jws
> (I have copied this file in CATALIA_HOME\webapps\axis folder).
> import org.w3c.dom.Element;
> import javax.xml.soap.SOAPEnvelope;
> import javax.xml.soap.Name;
> import javax.xml.soap.SOAPBody;
> import javax.xml.soap.SOAPBodyElement;
> import javax.xml.soap.SOAPHeader;
> import javax.xml.soap.SOAPElement;
>
> public class MessageService
> {
>     public Element[] echoElements(Element [] elems)
>     {
>         return elems;
>     }
>
>     public void process(SOAPEnvelope req, SOAPEnvelope resp) throws
> javax.xml.soap.SOAPException
>     {
>         try
>         {
>             SOAPBody body = resp.getBody();
>             System.out.println("\n\n");
>             System.out.println(body);
>             System.out.println("\n\n");
>             Name ns0 =  resp.createName("TestNS0", "ns0",
> "http://example.com";);
>             Name ns1 =  resp.createName("TestNS1", "ns1",
> "http://example.com";);
>             SOAPElement bodyElmnt = body.addBodyElement(ns0);
>             SOAPElement el = bodyElmnt.addChildElement(ns1);
>             el.addTextNode("TEST RESPONSE");
>         }
>         catch(Exception exp)
>         {
>             exp.printStackTrace();
>         }
>     }
> }
>
> And Client Code is : TestClient.java
>
> import java.io.ByteArrayInputStream;
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import javax.xml.soap.MessageFactory;
> import javax.xml.soap.SOAPEnvelope;
> import javax.xml.soap.SOAPMessage;
> import javax.xml.soap.SOAPPart;
> import javax.xml.soap.SOAPConnection;
> import javax.xml.soap.MimeHeaders;
> import javax.xml.soap.SOAPConnectionFactory;
> import javax.xml.soap.SOAPBodyElement;
> import javax.xml.soap.SOAPBody;
>
> public class TestClient
> {
>     public static void main(String [] args)
>     {
>         try
>         {
>             String        xmlString        =    "<?xml version=\"1.0\"
> encoding=\"UTF-8\"?>\n" +
>                                             "<soapenv:Envelope
> xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n"; +
>                                             "
> xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n"; +
>                                             "
> xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\";>\n" +
>                                             " <soapenv:Header>\n" +
>                                             "  <shw:Hello
> xmlns:shw=\"http://localhost:8080/axis/MessageService.jws\";>\n" +
>                                             "
> <shw:Myname>Tony</shw:Myname>\n" +
>                                             "  </shw:Hello>\n" +
>                                             " </soapenv:Header>\n" +
>                                             " <soapenv:Body>\n" +
>                                             "  <shw:process
> xmlns:shw=\"http://localhost:8080/axis/MessageService.jws\";>\n" +
>                                             "
> <shw:City>GENT</shw:City>\n" +
>                                             "  </shw:process>\n" +
>                                             " </soapenv:Body>\n" +
>                                             "</soapenv:Envelope>";
>
>             MessageFactory    mf            =
> MessageFactory.newInstance();
>             SOAPMessage        smsg        =    mf.createMessage(new
> MimeHeaders(), new ByteArrayInputStream(xmlString.getBytes()));
>             SOAPPart        sp            =    smsg.getSOAPPart();
>             SOAPEnvelope    se            =
> (SOAPEnvelope)sp.getEnvelope();
>
>             SOAPConnection    conn        =
> SOAPConnectionFactory.newInstance().createConnection();
>             SOAPMessage        response    =    conn.call(smsg,
> "http://localhost:8080/axis/MessageService.jws";);
>
>             System.out.println("Response : " + response.getSOAPBody());
>          }
>         catch (Exception e)
>         {
>             System.err.println(e.toString());
>         }
>     }
> }
>
> And when I try to execute the program I am getting this Exception in Tomcat
> Console
>
> AxisFault
>  faultCode: {http://xml.apache.org/axis/}Client.NoSOAPAction
>  faultSubcode:
>  faultString: no SOAPAction header!
>  faultActor:
>  faultNode:
>  faultDetail:
>         {http://xml.apache.org/axis/}stackTrace:no SOAPAction header!
>         at
> org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1013)
>         at
> org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>         at
> org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>         at
> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
>         at
> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
>         at
> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
>         at java.lang.Thread.run(Unknown Source)
>         {http://xml.apache.org/axis/}hostname:GSPCW046
> no SOAPAction header!
>         at
> org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1013)
>         at
> org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>         at
> org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>         at
> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
>         at
> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
>         at
> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
>         at java.lang.Thread.run(Unknown Source)
>
>
> Help Needed.
>
> --
> Thanks & Regards
> Sandeep Kumar K
> Sr. Software Engineer
> Geneva Software Technologies Limited,
> # 82, Research Center II, I floor, EPIPA
> Nallurhalli, Whitefield, Bangalore - 560066
> Mob  :  +91-9880193454

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to