You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by venkata akella <ve...@yahoo.com> on 2001/12/13 00:58:56 UTC

How to retrieve the message at service method sent by the client

HI

Can someone help me here...

I have a service class and client class. Service class
deployed on apache soap2.2. I am sending a message
from the client to service and getting back the
response properly. But I am trying to get the message
sent by the client at service side. From client side I
am sending the message file. Can someone help me out
here.

I am executing the client this way..

java MarksRequestMessage
http://localhost:8080/soap/servlet/messagerouter
msgfromstudent.xml

Here 
msgfromstudent.xml is my message file.
MarksRequestMessage  is client class.

this is my client class code

MarksRequestMessage .java :
=========================

import java.io.*;
import java.net.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import org.apache.soap.*;
import org.apache.soap.messaging.*;
import org.apache.soap.transport.*;
import org.apache.soap.util.xml.*;


public class MarksRequestMessage {
  public static void main (String[] args) throws
Exception {

    if (args.length != 2) {
      System.err.println ("Usage: java " +
MarksRequestMessage.class.getName () +
                          " SOAP-router-URL
envelope-file");
      System.exit (1);
    }

    // get the envelope to send
    FileReader fr = new FileReader (args[1]);
    DocumentBuilder xdb =
XMLParserUtils.getXMLDocBuilder();
    Document doc = xdb.parse (new InputSource (fr));

    if (doc == null) {
      throw new SOAPException
(Constants.FAULT_CODE_CLIENT, "parsing error while
parsing envelope file");
    }

    Envelope messageEnv = Envelope.unmarshall
(doc.getDocumentElement ());

    // Prepare and send the message
    Message msg = new Message ();
    msg.send (new URL (args[0]),
"urn:this-is-the-action-uri", messageEnv);

    // receive whatever from the transport and dump it
to the screen
    System.out.println ("RESPONSE:");
    System.out.println ("--------");
    SOAPTransport st = msg.getSOAPTransport ();
    BufferedReader br = st.receive ();
    String line;
    while ((line = br.readLine ()) != null) {
      System.out.println (line);
    }
  }
}

**** MarksRequestMessage .java  ends here ****

My service class:
StudentMarksListProcessor.java
=======================
import java.io.*;
import java.util.*;
import org.apache.soap.*;
import org.apache.soap.rpc.SOAPContext;
import javax.mail.MessagingException;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;


public class StudentMarksListProcessor {
  public void getMarksList(Envelope env, SOAPContext
reqCtx, 
                                           SOAPContext
resCtx)
    throws MessagingException, IOException {

	Body envBody = env.getBody();
	MimeBodyPart mimebp;
	StringBuffer strbf = new StringBuffer();
	String bodyToStirng = envBody.toString();
	strbf.append("Received the Following details. Marks
list will be processed and sent\n");
	strbf.append("Soap Envelop\n");
	strbf.append(bodyToStirng);
	strbf.append("Soap request context \n");
	strbf.append(reqCtx.toString());

	Vector vct = env.getEnvelopeEntries();

	strbf.append("get envelope entries \n");
	if( vct != null)
		strbf.append(vct.toString());

	strbf.append("Request property names \n");
	Enumeration enum = reqCtx.getPropertyNames();
	while(enum != null && enum.hasMoreElements()) {
		strbf.append((String)(enum.nextElement()));
	}

	strbf.append("\n");

	 MimeBodyPart rootPart = reqCtx.getRootPart();

	
    resCtx.setRootPart(strbf.toString() , "text/xml");


  }

}

***** StudentMarksListProcessor.java ends here ****

My message file:
==================

<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<getMarksList xmlns="urn:mlist-processor" >
    <studentdetails id="12345">
        <name>Sincere Student</name>
	<class> 10th </class>
	<year> 2001 </year>
    </studentdetails>

   <studentaddress>
	       <street>620 iris ave</street>
        <city>sunnyvale</city>
        <state>CA</state>
        <zip>94086</zip>
   </studentaddress>

   <comment>Please send as soon as possible </comment>
    
</getMarksList>
</s:Body>
</s:Envelope>

***** Message file ends here ****

I am trying to access the content of this message file
in the service method
public void getMarksList(Envelope env, SOAPContext
reqCtx, SOAPContext resCtx);

Can some one help me using reqCtx or env.. How to get
the content of the message sent from the client side.

Thanks
Sastry








__________________________________________________
Do You Yahoo!?
Check out Yahoo! Shopping and Yahoo! Auctions for all of
your unique holiday gifts! Buy at http://shopping.yahoo.com
or bid at http://auctions.yahoo.com