1
我正在爲需要附件的SOAP服務創建Java客戶端。我使用的是之前使用的java.xml.soap類,但不使用附件。服務器聲稱我的附件不包括在內。Content-Type Missing「start =」Java SOAP客戶端中的標記,服務器找不到附件
我使用SoapUI,它工作,wireshark將我的SOAP消息與工作的SOAP消息進行比較。一個很大的區別是我的頭文件不包含「start =」。
工作的Content-Type看起來是這樣的:
內容類型:多部分/相關;類型= 「文本/ xml」 的;開始= 「」;邊界=「---- = _ Part_23_6341950.1286312374228」
內容類型,我從我的Java代碼得到的是這樣的:
內容類型:多部分/相關;類型= 「文本/ xml」 的; border =「---- = _ Part_23_6341950.1286312374228」
沒有開始=即使在根元素上設置了內容ID。正在運行和發生故障的SOAP消息幾乎完全相同。如何獲得生成的開始標記,或者服務器可能看不到附件的其他原因?
感謝
SOAPMessage soapMessage =
MessageFactory.newInstance().createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
SOAPBody body = soapEnvelope.getBody();
SOAPHeader header = soapMessage.getSOAPHeader();
soapPart.setContentId("<[email protected]>");
MimeHeaders mimeHeaders = soapMessage.getMimeHeaders();
mimeHeaders.addHeader("SOAPAction", "addDocument");
mimeHeaders.addHeader("Accept-Encoding", "gzip,deflate");
Name bodyName = soapEnvelope.createName("Document", "doc",
"http://ns/Document");
SOAPBodyElement document = body.addBodyElement(bodyName);
Name filenameName = soapEnvelope.createName("Filename", "doc",
"http://ns/Document");
SOAPElement filename = document.addChildElement(filenameName);
filename.setValue("filename.txt");
AttachmentPart attachment = soapMessage.createAttachmentPart();
attachment.setContent("Some text", "application/octet-stream");
attachment.setMimeHeader("Content-Transfer-Encoding", "binary");
soapMessage.addAttachmentPart(attachment);
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = scf.createConnection();
URL url = new URL("http://host/Service");
SOAPMessage reply = soapConnection.call(soapMessage, url);