Hi All,

I am a new AXIS 2 user. I am not too familiar with SOAP either.. 
I am trying to write a class which would connect to a web server which offers 
three services namely,

1. getAnnotation
2. getLastUpdate 
3. getAllArrays

The first service requires two strings as input and returns a file. The second 
and third do not require any input parameters and return a String.
I have been successful in using  the second and third service. The first one 
(getAnnotation) is giving me a hard time. I have tried following the examples 
in the Axis2 examples directory, but have not been able to retreive the file. I 
have attached the WSDL file in the email.
Any help would be highly appreciated.

Thanks!


The Error :


Response Envelope:

<?xml version='1.0' encoding='utf-8'?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
<soap:Body>
<getAnnotationResponse xmlns="urn:rsrcSOAP">
<file xsi:type="xsd:string">affy_HG-U133A</file>
</getAnnotationResponse>
</soap:Body>
</soap:Envelope>

MessageID:urn:uuid:6EB4D3C78EEACF75631190730622370
Messagebody:[MessageContext: logID=urn:uuid:6EB4D3C78EEACF75631190730623746]
File Name : affy_HG-U133A
File element id:urn:uuid:6EB4D3C78EEACF75631190730623746 
java.lang.Exception: Cannot find the data handler.
    at org.tigr.remote.soap.SoapCall.main(SoapCall.java:120)





My code looks as follows:


public class SoapCall {
        
     private static EndpointReference targetEPR = new 
EndpointReference("http://web-dev.dfci.harvard.edu/tgi/cgi-bin/tgi/SOAP/rsrc.cgi";);

     public static void main(String[] args) {

         try {
             SOAPFactory fac = (SOAPFactory) 
OMAbstractFactory.getSOAP11Factory();
             SOAPEnvelope envelope = (SOAPEnvelope) fac.getDefaultEnvelope();



             OMNamespace omNs = fac.createOMNamespace("urn:rsrcSOAP", 
"rsrcSOAP");

             //The method is getAnnotation and input parameters is the 
hardcoded value "affy_HG-U133A"
             // and "CLONE_ID". I have used "arrayName" and "fields" to denote 
the two OMElements because
             //the "part name" fields in the WSDL file for the "message name = 
getAnnotationRequest"
             //were "arrayName" and "fields" respectively
             
             OMElement method = fac.createOMElement("getAnnotation", omNs);

             OMElement value1 = fac.createOMElement("arrayName", omNs);
             value1.setText("affy_HG-U133A");

             OMElement value2 = fac.createOMElement("fields", omNs);
             value2.setText("CLONE_ID");
             method.addChild(value1);
             method.addChild(value2);
             envelope.getBody().addChild(method);


             ServiceClient client = new ServiceClient();
             OperationClient operationClient = 
client.createClient(ServiceClient.ANON_OUT_IN_OP);

             //creating message context
             MessageContext outMsgCtx = new MessageContext();

             //assigning message context’s option object into instance variable
             Options opts = outMsgCtx.getOptions();
             
             //setting properties into option
             opts.setTo(targetEPR);
             opts.setAction("urn:rsrcSOAP#getAnnotation");



             outMsgCtx.setEnvelope(envelope);
             operationClient.addMessageContext(outMsgCtx);
             operationClient.execute(true);
             MessageContext response = operationClient.getMessageContext("In");
             SOAPBody body = (SOAPBody) response.getEnvelope().getBody();
             OMElement element = body.getFirstChildWithName(new 
QName("urn:rsrcSOAP","getAnnotationResponse"));




             System.out.println("File Name : "
                     + element.getFirstChildWithName(new 
QName("urn:rsrcSOAP","file")).getText());

             OMElement fileElement = element.getFirstChildWithName(new 
QName("urn:rsrcSOAP","file"));

             //retrieving the ID of the attachment. The ID string has a "]" 
character at the end.
             String fileElementID=response.getLogIDString();


             String temp1=fileElementID.split("=")[1];
             String temp2=temp1.replace(']', ' ');


             DataHandler dataHandler = response.getAttachment(temp2);
             if (dataHandler!=null){
                 // Writing the attachment data (graph image) to a file
                 File graphFile = new File("response.txt");
                 FileOutputStream outputStream = new 
FileOutputStream(graphFile);
                 dataHandler.writeTo(outputStream);
                 outputStream.flush();
                 System.out.println("Download statistics graph saved to :" + 
graphFile.getAbsolutePath());
             }else
             {
                 throw new Exception("Cannot find the data handler.");
             }

    
            
            
        }catch(Exception e) {
            e.printStackTrace();
        }
        

        }
        
        
        
        
        





       
____________________________________________________________________________________
Boardwalk for $500? In 2007? Ha! Play Monopoly Here and Now (it's updated for 
today's economy) at Yahoo! Games.
http://get.games.yahoo.com/proddesc?gamekey=monopolyherenow  

Attachment: rsrc_no_enc.wsdl
Description: application/xml

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

Reply via email to