Как манипулировать SOAP-ответом, содержимое которого является PDF в java? - PullRequest
0 голосов
/ 06 ноября 2019

В настоящее время я использую очень старый веб-сервис SOAP с Java 11, тип контента которого: application / dime .

Я пробовал JAXWS, но он не работал, теперь я отправляю простой запрос POST и могу получить ответ.

enter image description here

Как я вижу ответ, он состоит из 2 разделов. Первый из них содержит xml, который заканчивается на </soap:Envelope>, а в другом разделе - фактический PDF.

Когда я открою содержимое ответа, удалите первую строку (которая представляет собой XML) и сохранитефайл с расширением .pdf, тогда я без проблем вижу PDF.

Я пытаюсь сделать то же самое с HttpURLConnection и получаю массив байтов, подобный этому:

byte[] encoded = Files.readAllBytes(Paths.get("C:\\Users\\aarzaluz\\request.xml"));

    URL oURL = new URL("http://MMC0EIGDWebService/ServiceApp.asmx");
    HttpURLConnection con = (HttpURLConnection) oURL.openConnection();
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-type", "text/xml; charset=utf-8");
    con.setRequestProperty("SOAPAction", "http://tempuri.org/MMWebService/ServiceApp/MM");
    con.setDoOutput(true);
    con.setDoInput(true);

    // Then I send a request:
    OutputStream reqStream = con.getOutputStream();
    reqStream.write(encoded);
    reqStream.flush();
    reqStream.close();

    // and pick up the response as follows:
    InputStream resStream = con.getInputStream();
    byte[] fileAsBytes = getArrayFromInputStream(resStream);
    // TODO how to remove all the characters that come before: </soap:Envelope> pattern

    writeContent(fileAsBytes, "C:\\Users\\aarzaluz\\response.pdf");

В ответе, как я могу удалить все символы, предшествующие </soap:Envelope>, а затем сохранить в response.pdf?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...