![](/img/trans.png)
[英]How to run soap service in soapui(using wsdl) with password protection as like as in server?
[英]How to make a SOAP Request to an Endpoint or WSDL like SoapUI?
我需要向WSDL描述的BPEL流程发出请求。 我一直在通过提供WSDL URL使用SoapUI对其进行测试,并且一切正常。
现在,我需要使用Java进行相同的操作。 我正在构建一个Web服务,该服务从另一个Web服务接收数据,并且需要将其传递给BPEL流程。 我尝试使用wsdl2java和wsimport生成存根,但是这不起作用,因为我的BPEL WSDL没有服务定义(我无法添加它,因为如果这样做,WSDL在我的BPEL中不起作用)。
因此,由于SoapUI能够发出请求,因此很明显,有某种方法可以在其中不包含服务定义的情况下调用BPEL WSDL,我认为这是解决我的问题的唯一方法。
TL / DR:SoapUI如何向wsdl文件发出请求,我该怎么做?
看看Java Web Service框架,例如JAX-WS,Metro,CXF,Axis2,SpringWS的参考实现,...它们全都可以使用您的WSDL并为您提供或生成客户端存根。
我设法通过创建一个新的WSDL,这将产生存根符合从BPEL WSDL的那些,并通过创建向所描述的一个SOAP消息的客户端类来解决这个问题在这里 。 为了找出我需要在消息中定义的内容,我使用了SoapUI记录器来查看消息正在发送的内容。
我一直在成功地使用此代码,即使直接从oracle也是如此。 如果需要,您将需要安装证书,并在需要时添加更多标头。
import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;
public class TestWSHTTPS {
private static final int TIME_OUT = 10000;
public static void main(String[] args) throws Exception {
final String URL = "http://localhost:8080/TestSoap";
final String FILE = "/path/to/your/file.txt";
URL obj = new URL(URL);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setConnectTimeout(TIME_OUT);
byte[] fileBytes = Files.readAllBytes(Paths.get(FILE));
String fileContent = new String(fileBytes, "UTF-8");
// request headers (add all headers needed)
con.setRequestMethod("POST");
con.setRequestProperty("Content-length", String.valueOf(fileBytes.length));
con.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
// Send post request
con.setDoOutput(true);
con.setReadTimeout(TIME_OUT);
DataOutputStream outputStream= new DataOutputStream(con.getOutputStream());
outputStream.write(fileContent.getBytes());
int responseCode = con.getResponseCode();
System.out.println("responseCode:" + responseCode);
InputStream in = null;
if (con.getResponseCode() >= 200 && con.getResponseCode()<= 300 ) {
in = con.getInputStream();
} else {
in = con.getErrorStream();
}
System.out.println("\nSending 'POST' request to URL : " + URL);
System.out.println("Response Code : " + responseCode);
Scanner s = new Scanner(in).useDelimiter("\\A");
String result = s.hasNext() ? s.next() : "";
System.out.println(result);
}
}
在这里查看完整示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.