Hi,
           I have my soap C++ server and apache java client. In my server i
have the method of adding two numbers. From client i send the xml with two
numbers. the server recieves the envelope processes it and sends back the
response with the sum as return value. Now my problem is when i just send
the xml(reading the xml file and writing to io and again reading the
response of server from io), the client and server are working fine. But
when i use the same xml and parse it and send then i am getting a null
pointer exception. 

Here is the client code that i am using.

public class SendMessage {
  public static void main (String[] args) throws Exception {
    if (args.length != 2) {
      System.err.println ("Usage: java " + SendMessage.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");
    }

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

    Message msg = new Message ();   
    try
    {
        msg.send (new URL (args[0]), "", msgEnv); //getting exception here
as nullpointer exception. Please let me know why?
        }
        catch(Exception e)
        {
                System.out.println("into the exception"); 
        }

    
  }
}


Here is the message envelope that the client is sending to the server. And
the envelope is sent correctly.

POST /soap/Calculation
HTTP/1.0 Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: 666
SOAPAction: ""

 <?xml version='1.0' encoding='UTF-8'?> 
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsd="http://www.w3.org/1999/XMLSchema";>
<SOAP-ENV:Body>
 <add SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>       
       <a xsi:type="xsd:int"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";>5</a>
       <b xsi:type="xsd:int"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";>6</b>
</add>
 </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>


Here is the message envelope sent by the server after recieving the client
message.

<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
 xmlns:xsd="http://www.w3.org/1999/XMLSchema";
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
<SOAP-ENV:Body>
<addResponse
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; >
<returnValue xsi:type="xsd:int">11</returnValue>
</addResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

I am not knowing why i am getting null pointer exception when when i say
msg.send. Please help me. Is there any problem with the Apache's way of
parsing the envelope? But it is sending the envelope correctly, then why am
i getting the null pointer exception?

Thanks,
Jyothi


Reply via email to