Тип содержимого отсутствует тег "start =" в клиенте Java SOAP, вложение не найдено сервером - PullRequest
1 голос
/ 07 октября 2010

Я создаю 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);

1 Ответ

0 голосов
/ 07 декабря 2011

Это работает для меня:

soapMessage.getMimeHeaders().setHeader("Content-Type", 
  soapMessage.getMimeHeaders().getHeader("Content-Type")[0]+
    "; start=\"<rootpart@here.com>\"");
...