SOAP UI API通过Java代码设置SOAP消息部分值

SOAP UI API通过Java代码设置SOAP消息部分值,java,web-services,soapui,xml-rpc,Java,Web Services,Soapui,Xml Rpc,在的最后一篇文章之后,我创建了一个客户端,用于向SOAP RPC web服务发送请求 首先,我通过以下方法创建了XML项目文件: public static void runSoap() throws Exception { String projectFile = "C:/Test/TestProjectA-soapui-project.xml"; SoapUI.setSoapUICore(new StandaloneSoapUICore(true)); WsdlPr

在的最后一篇文章之后,我创建了一个客户端,用于向SOAP RPC web服务发送请求

首先,我通过以下方法创建了XML项目文件:

public static void runSoap() throws Exception {

    String projectFile = "C:/Test/TestProjectA-soapui-project.xml";
    SoapUI.setSoapUICore(new StandaloneSoapUICore(true));
    WsdlProject project = new WsdlProject(projectFile);
    int c = project.getInterfaceCount();

    for(int i=0;i<c;i++) {
        WsdlInterface wsdl = (WsdlInterface) project.getInterfaceAt(i);
        String soapVersion = wsdl.getSoapVersion().toString();

        System.out.println("The SOAP version ="+soapVersion);
        System.out.println("The binding name = "+wsdl.getBindingName());

        int opc = wsdl.getOperationCount();
        System.out.println("Operation count ="+opc);

        String result="";

        for(int j=0;j<opc;j++){
            WsdlOperation op = wsdl.getOperationAt(j);
            String opName = op.getName();

            System.out.println("OPERATION:"+opName);

            WsdlRequest req = op.getRequestByName("Req_"+soapVersion+"_"+opName);

            req.setEndpoint("<my_WSDL_ENDPOINT>");

            WsdlSubmitContext wsdlSubmitContext = new WsdlSubmitContext(req);
            WsdlSubmit<?> submit = (WsdlSubmit<?>) req.submit(wsdlSubmitContext, false);
            Response response = submit.getResponse();
            result = response.getContentAsString();

            System.out.println("The result ="+result);

        }

    }
public static void runSoap()引发异常{
String projectFile=“C:/Test/TestProjectA soapui project.xml”;
SoapUI.setSoapUICore(新标准soapuicore(真实));
WsdlProject=新的WsdlProject(项目文件);
int c=project.getInterfaceCount();
对于(int i=0;i submit=(WsdlSubmit)请求提交(wsdlSubmitContext,false);
Response=submit.getResponse();
字符串结果=response.getContentAsString();
System.out.println(“结果=”+结果);
}
要清楚,SOAP信封主体是:

<soapenv:Body>
  <urn:login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
     <user xsi:type="xsd:string">?</user>
     <pwd xsi:type="xsd:string">?</pwd>
     <keycartella xsi:type="xsd:string">?</keycartella>
  </urn:login>

?
?
?


我想替换默认值“?”通过Java代码使用实际值,而不是更改XML文件。

您能够解决此问题吗?我遇到了上述问题,我使用Netbeans而不是Eclipse解决了此问题。您需要遵循此过程,您将能够编译客户端。如果在编译过程中收到错误,请添加javamail-mailapi-1.4.jar和javax.XML.rpc-3.1.jar到您的项目libs。这可能会解决这个问题。您能解决这个问题吗?我正好遇到了上面的问题。我已经使用Netbeans而不是Eclipse解决了这个问题。您需要遵循此过程,您将能够编译客户端。如果在编译过程中收到错误,请添加javamail-mailapi-1.4.jar和javax.xml.rpc-3.1.jar to您的项目库。这可能会解决问题。
<soapenv:Body>
  <urn:login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
     <user xsi:type="xsd:string">?</user>
     <pwd xsi:type="xsd:string">?</pwd>
     <keycartella xsi:type="xsd:string">?</keycartella>
  </urn:login>