Я создаю Java-клиент для службы SOAP, которая принимает вложение.Я использую классы java.xml.soap, которые я использовал ранее, но не с вложениями.Сервер утверждает, что мое вложение не включено.
Я использовал работающий SoapUI и wireshark, чтобы сравнить мое сообщение SOAP с рабочим сообщением SOAP.Одно большое отличие состоит в том, что мой заголовок не включает "start =".
Рабочий тип контента выглядит следующим образом:
Тип контента: multipart / related;тип = "текст / XML";начать = "";border = "---- = _ Part_23_6341950.1286312374228"
Тип содержимого, который я получаю из своего кода Java, выглядит следующим образом:
Тип содержимого: multipart / related;тип = "текст / XML";border = "---- = _ Part_23_6341950.1286312374228"
Без запуска = даже если для корневого элемента установлен идентификатор содержимого.Рабочие и ошибочные сообщения SOAP в остальном практически идентичны.Как получить сгенерированный стартовый тег или по каким другим причинам сервер может не видеть вложение?
Спасибо
SOAPMessage soapMessage =
MessageFactory.newInstance().createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
SOAPBody body = soapEnvelope.getBody();
SOAPHeader header = soapMessage.getSOAPHeader();
soapPart.setContentId("<rootpart@here.com>");
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);