[jboss-user] [JBossWS] - Re: Problem with SAAJ Client for Webservice that receives at
RomeuFigueira
do-not-reply at jboss.com
Tue Nov 7 10:15:38 EST 2006
Ok, further info.
This is from a very similar webservice, only difference in this one is that it deals with JPEGs.
These are TCPmon captures.
My Client (attachment output ommited):
POST /MediationAttachPic HTTP/1.1
| Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
| Content-Type: multipart/related;
| type="text/xml";
| boundary="----=_Part_1_17933220.1162911613951"
| Content-Length: 4228
| SOAPAction: ""
| Cache-Control: no-cache
| Pragma: no-cache
| User-Agent: Java/1.5.0_08
| Host: 127.0.0.1:8081
| Connection: keep-alive
|
| ------=_Part_1_17933220.1162911613951
| Content-Type: text/xml; charset=utf-8
|
| <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:com.mediation">
| <SOAP-ENV:Body>
| <urn:depositAttach>
| <id_lote>1</id_lote>
| <file_name>xml-pic</file_name>
| </urn:depositAttach>
| </SOAP-ENV:Body></SOAP-ENV:Envelope>
| ------=_Part_1_17933220.1162911613951
| Content-Type: image/jpeg
| Content-ID: <imgpart=5e62851c:10ec2ef030e:-8000 at example.com>
SOAPui (attachment output ommited):
POST /MediationAttachPic HTTP/1.1
| SOAPAction: ""
| Content-Type: multipart/related;
| type="text/xml";
| start="<rootpart at soapui.org>";
| boundary="----=_Part_0_26490427.1162911728786"
| MIME-Version: 1.0
| User-Agent: Jakarta Commons-HttpClient/3.0.1
| Host: 127.0.0.1:8081
| Content-Length: 4381
|
|
| ------=_Part_0_26490427.1162911728786
| Content-Type: text/xml; charset=UTF-8
| Content-Transfer-Encoding: 8bit
| Content-ID: <rootpart at soapui.org>
| <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:com.mediation">
| <soapenv:Header/>
| <soapenv:Body>
| <urn:depositAttach>
| <id_lote>2</id_lote>
| <file_name>xml_pic</file_name>
| </urn:depositAttach>
| </soapenv:Body>
| </soapenv:Envelope>
| ------=_Part_0_26490427.1162911728786
| Content-Type: image/jpeg
| Content-Transfer-Encoding: binary
| Content-ID:
| <imgpart=15912942847484 at soapui.org>
The main difference to me is this line, which I believe is the one causing errors:
start="<rootpart at soapui.org>";
How can I define this in my client?
SAAJ_ATTACH_CLIENT
| public class SAAJ_Attach_Client
| {
| public static final String NAMESPACE_URI = "com.mediation";
| public static final String PREFIX = "urn";
| public static final String METHOD = "depositAttach";
| public static final File attach = new File("xml-pic.jpg");
| public static final String WS_URI = "http://localhost:8081/MediationAttachPic";
|
| public static void main(String[] args)
| {
|
| try
| {
| MessageFactory msgFactory = MessageFactory.newInstance();
| SOAPMessage msg = msgFactory.createMessage();
| SOAPPart soapPart = msg.getSOAPPart();
| SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
|
| soapEnvelope.addNamespaceDeclaration(PREFIX,PREFIX+":"+NAMESPACE_URI);
|
| // for this tutorial web service, we don't have any headers,
| // so detach the one we get for "free":
| SOAPHeader soapHeader = soapEnvelope.getHeader();
| soapHeader.detachNode();
|
| // to the body, add the document we want to send to the
| // profile update web service:
| SOAPBody body = msg.getSOAPBody();
| SOAPFactory soapFactory = SOAPFactory.newInstance();
| Name bodyName = soapFactory.createName(METHOD,PREFIX, "");
| SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
|
| // add the "profileID" element:
| Name profileIDParamName = soapFactory.createName("id_lote");
| SOAPElement profileID = bodyElement.addChildElement(profileIDParamName);
| profileID.addTextNode("1");
|
| // add the "profilePhotoRef" reference to the photo we will attach:
| Name profilePhotoRefParamName = soapFactory.createName("file_name");
| SOAPElement profilePhotoRef = bodyElement.addChildElement(profilePhotoRefParamName);
|
| profilePhotoRef.addTextNode("xml-pic");
|
| // get the image file and attach it:
| AttachmentPart binaryAttachPart = null;
|
| FileDataSource binaryFds = new FileDataSource(attach);
| DataHandler binaryFileHandler = new DataHandler(binaryFds);
| binaryAttachPart = msg.createAttachmentPart(binaryFileHandler);
| binaryAttachPart.setContentType("image/jpeg");
|
| binaryAttachPart.setContentId("<imgpart="+ (new java.rmi.server.UID()).toString() + "@example.com>");
| msg.addAttachmentPart(binaryAttachPart);
|
| if (msg.saveRequired())
| {
| msg.saveChanges();
| }
|
| // echo the document first:
| System.out.println("\nAbout to send the following SOAPMessage:\n");
| msg.writeTo(System.out);
| System.out.println("\nto endpoint URL " + WS_URI + "\n");
|
| // ...then send it, and echo the response:
| SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
| SOAPConnection soapConn = soapConnFactory.createConnection();
| SOAPMessage responseMsg = soapConn.call(msg, WS_URI);
| System.out.println("\nGot the following SOAPMessage in response:\n");
| responseMsg.writeTo(System.out);
|
| // in real life, declare outside of block and close in finally
| soapConn.close();
| }
| catch (IOException ioe)
| {
| System.err.println("IOException writing SOAPMessage: '" + ioe.getMessage() + "'");
| }
| catch (SOAPException se)
| {
| System.err.println("SOAPException: '" + se.getMessage() + "'");
| System.err.println(" Cause: '" + se.getCause().getClass().getName() + "': " + se.getCause().getMessage());
| }
|
| }
|
| public SAAJ_Attach_Client()
| {
| }
| }
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3983789#3983789
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3983789
More information about the jboss-user
mailing list