首页 > 解决方案 > 将 cURL 转换为 Java 以进行 SOAP 调用

问题描述

我正在实现一个 SOAP Web 服务,它正在处理一个 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:我已经有一个 Web 服务正在运行并且我正在使用 Eclipse Oxygen。

标签: javaspringspring-bootcurlsoap

解决方案


最后将下面的行添加到您的代码中,它将完成这项工作。

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());

推荐阅读