I am having trouble creating a SOAP message from a generated client when
the message includes attachments -- the client throws
"org.apache.axiom.soap.SOAPProcessingException: First Element must
contain the local name, Envelope , but found html." I am using axis2
1.3, and I can make requests to other methods (without attachments) in
the same service with no problems.
Here's what I did:
- set enableMTOM to true in axis2.xml
- created method in my POJO service: public long createAttachment(long
messageID, DataHandler attData)
- generated client stub via wsdl2java
- added these lines to client stub:
_serviceClient.getOptions().setProperty(
Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
_serviceClient.getOptions().setTimeOutInMilliSeconds(10000);
- created client that runs the method like this:
DataHandler attData = new DataHandler(new
FileDataSource(filename));
long attachmentID = stub.createAttachment(messageID, attData);
When I run the client, I get
[INFO] OMException in getSOAPBuilder
org.apache.axiom.soap.SOAPProcessingException: First Element must
contain the local name, Envelope , but found html
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:219)
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:177)
at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:163)
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:161)
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:110)
at
org.apache.axis2.builder.BuilderUtil.getSOAPBuilder(BuilderUtil.java:609)
at
org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:178)
at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:111)
at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:87)
at
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:326)
at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
...
Caused by: org.apache.axiom.soap.SOAPProcessingException: First Element
must contain the local name, Envelope , but found html
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:219)
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:177)
at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:163)
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:161)
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:110)
at
org.apache.axis2.builder.BuilderUtil.getSOAPBuilder(BuilderUtil.java:609)
at
org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:178)
at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:111)
at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:87)
... 6 more
Running other methods in the same client with the same service work
fine, if they don't have attachments. The file I'm trying to send is a
2.5k jpg. What am I doing wrong?
Kimberly