java - 将 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。
解决方案
最后将下面的行添加到您的代码中,它将完成这项工作。
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());
推荐阅读
- laravel - Breeze auth 中间件重定向回登录页面本身
- mongodb - 带有反应性 MongoDB 的 Spring Boot 抛出打开套接字异常
- reactjs - 如何在 index.html 中添加脚本以响应应用程序
- android - WorkManager - 定期运行作业的问题
- php - 生成的变量导致错误的结果
- flutter - 如果选择器未滚动,Flutter Cupertino Picker 在第一项上会出错
- verilog - 测试给出 x 而不是数字的 8 位全加器
- c# - 如何解决 PostMessageW 的问题
- javascript - 是否使用 javascript 重新分配父母将项目分配到弹性列的适当方式?
- imagemagick - 将图像的多个区域组合成目标