Я хочу нажать на 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: Невозможно усвоить сообщение