使用SOAP UI测试SOAP Web Service时获取Null值

时间:2018-04-16 09:37:56

标签: java web-services spring-boot soap soapui

我正在尝试使用SOAP UI测试SOAP Web服务。但是在我们的java方法中访问请求参数时,获取空值甚至传递给soap ui中的参数,该方法已将端点映射到操作。

请找到如下代码:

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "UserList")
        @ResponsePayload
        public JAXBElement<UserListResponse> UserListRequest(@RequestPayload JAXBElement<UserListRequest> request) throws Exception {

            System.out.println("Enters into UserList()");

            try {


                UserListRequest userListRequest = request.getValue();



   System.out.println("Number:"+userListRequest.getNumber());//Getting Number is null even passing passing in SOAP UI



      System.out.println("ID:"+userListRequest.getHeader().getCorrelationID()); //Here also getting java.lang.NullPointerException
//As i am not getting why soap Ui values are not binding and object reference is coming to userListRequest.
                if(userListRequest.getReference().equals("C")) {
                    userListRequest.setNumber(userListRequest.getNumber());
                }
            }
            catch(Exception e) {
                e.printStackTrace();
            }
            return null;
        }

请求XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prim="http://COM.SERVICES.WebServices/UserServices">
   <soapenv:Header/>
   <soapenv:Body>
      <prim:UserList>
         <!--Optional:-->
         <prim:XMLRequest>
            <!--Optional:-->
            <prim:Header>
               <!--Optional:-->
               <prim:MessageID>2</prim:MessageID>
               <!--Optional:-->
               <prim:CorrelationID>2</prim:CorrelationID>
               <!--Optional:-->
               <prim:SystemID>2</prim:SystemID>
               <!--Optional:-->
               <prim:RequestorID>2</prim:RequestorID>
            </prim:Header>
            <prim:Reference>C</prim:Reference>
            <!--Optional:-->
            <prim:Number>1120521877477751</prim:Number>
            <!--Optional:-->
            <prim:Usercount>51</prim:Usercount>
         </prim:XMLRequest>
      </prim:UserList>
   </soapenv:Body>
</soapenv:Envelope>

我无法理解为什么它会给出null。任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我建议你了解debugging Java in general。当谈到你的错误时,我认为它来自那里:

if(userListRequest.getReference().equals("C")) {
    userListRequest.setNumber(userListRequest.getNumber());
}

您的userListRequest reference可能为空,因此您正在尝试致电:

if (null.equals("C"))    {
    // Your treatment

要解决这个问题,请将oracle(=静态成员)放在比较的左侧:

if ("C".equals(userListRequest.getReference()))    {
  userListRequest.setNumber(userListRequest.getNumber());
}

它不会让你的reference不为空,但它不会再崩溃了。

修改

对于将SoapUI绑定到Java时的null问题,请检查this answer,这可以帮助您找出问题所在。它可能来自您的模型本身。现在您发布了请求,我们可以在XML树中看到Reference对象存在:

UserList
    XMLRequest
        Reference

从我看到的,它应该是这样的:

userList.getXMLRequest.getReference();

但是,您尝试检索:

userListRequest.getReference();

我不知道你是如何编写POJO模型的,但有些东西不在那里。尝试在其他任何事情之前检查这种架构是否正确实现。