Как использовать вложение в веб-сервисе SOAP POST-запроса вместе с телом сообщения? - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу нажать на SOAP POST-запрос веб-службы, например, сказать http://localhost:8080/someService.

У меня есть тело запроса в xml, например

Теперь у меня также естьодно вложение в виде текстового файла, которое находится на каком-то диске C: например, C: /Desktop/test.txt.

Может ли кто-нибудь подсказать мне реализацию в Java.Я попытался использовать HTTPURlConnection и SOAPCOnnection, но не смог заставить его работать.

            String responseString = "";
    String outputString = "";
    String wsURL = "http://10.123.10.15:1234/ABCDEF";
    URL url = new URL(wsURL);
    URLConnection connection = url.openConnection();

    HttpURLConnection httpConn = (HttpURLConnection) connection;
    ByteArrayOutputStream bout = new ByteArrayOutputStream();

byte[] buffer = new byte[sbr.toString().length()];
    System.out.println(sbr.toString());
    buffer = sbr.toString().getBytes();
    bout.write(buffer);
    byte[] b = bout.toByteArray();
    String SOAPAction = "http://litwinconsulting.com/webservices/GetWeather";
    // Set the appropriate HTTP parameters.
//  httpConn.setRequestProperty("Content-Length", String.valueOf(b.length));
    //httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
    httpConn.setRequestProperty("SOAPAction", SOAPAction);
    httpConn.setRequestMethod("POST");
    //httpConn.setChunkedStreamingMode(-1);
    httpConn.setDoOutput(true);
    httpConn.setDoInput(true);
    httpConn.setRequestMethod("POST");


    SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
    SOAPConnection soapConnection = soapConnectionFactory.createConnection();
    //       Send SOAP Message to SOAP Server
    SOAPMessage message = createSOAPRequest(sbr.toString());
    message.getMimeHeaders().setHeader("Content-Type", "application/xop+xml; type=\"text/xml\"; charset=utf-8");

    AttachmentPart attachment = message.createAttachmentPart();
    attachment.setContent(new File("C://Desktop//test.txt"), "text/plain");

    attachment.setContentId("c0ec843c-a975-4abf-bd12-4b4cc46ea6c0");
    message.addAttachmentPart(attachment);

     message.saveChanges();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        message.writeTo(baos);
        String msg = baos.toString();
        System.out.println(msg);

        SOAPMessage soapResponse = soapConnection.call(message, wsURL);

        String response = getResponseString(soapResponse);
        System.out.println(response);

Я получаю следующую ошибку

com.sun.xml.internal.messaging.saaj.soap.MessageImpl init SEVERE: SAAJ0535: Невозможно усвоить сообщение

...