Конвертировать cURL в Java для SOAP Call - PullRequest
0 голосов
/ 07 июня 2018

Я внедряю веб-сервис SOAP, и он работает с вызовом cURL.Я реализовал следующий этот учебник .Служба работает со следующей командой:

curl --header "content-type: text/xml" -d @request.xml http://localhost:8080/ws

Но, конечно, это действие должно быть свободным от командной строки и должно вызываться при необходимости, поэтому я хочу связать эту службу с действием, когданапример, вызывается метод.

Пока что я нашел из интернета

        String url = "http://localhost:8080/ws";
        URL obj = new URL(url);
        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestProperty("Content-Type", "text/xml");
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");

Я предполагаю, что это должен быть метод POST, но как мне добавить "request.xml" и "--header "?Какая команда завершит вызов cURL?Или я делаю это совершенно неправильно и долгий путь, есть ли более легкий путь?

PS: у меня уже запущен веб-сервис, и я использую Eclipse Oxygen.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Хотя HttpURLConnection может использоваться для этой цели, SOAPConnection был разработан для ситуаций, когда нет WSDL.

Код ниже гораздо проще:

SOAPConnection conn = SOAPConnectionFactory.newInstance().createConnection();

SOAPMessage msg =
        MessageFactory.newInstance()
            .createMessage(null, Files.newInputStream(Paths.get("request.xml")));

SOAPMessage resp = conn.call(msg, "http://localhost:8080/ws");

resp.writeTo(System.out);
0 голосов
/ 08 июня 2018

Добавьте строки ниже к вашему коду в конце, это сделает JOB.

OutputStream wr = new DataOutputStream(conn.getOutputStream());


    BufferedReader br = new BufferedReader(new FileReader(new File("request.xml")));

    //reading file and writing to URL
    System.out.println("Request:-");
    String st;
    while ((st = br.readLine()) != null) {
        System.out.print(st);
        wr.write(st.getBytes());
    }

    //Flush&close the writing to URL.
    wr.flush();
    wr.close();

    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String output;

    StringBuffer response = new StringBuffer();
    while ((output = in.readLine()) != null) {
        response.append(output);
    }

    in.close();


    // printing result from response
    System.out.println("Response:-" + response.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...