【问题标题】:Getting Null Values while testing SOAP Web Service using SOAP UI使用 SOAP UI 测试 SOAP Web 服务时获取空值
【发布时间】:2018-04-16 09:37:56
【问题描述】:

我正在尝试使用 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 。谁能帮我解决这个问题。

【问题讨论】:

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


【解决方案1】:

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

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

您的userListRequestreference 可能为空,因此您正在尝试调用:

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

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

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

它不会使您的reference 不为空,但它不会再崩溃。


编辑

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

UserList
    XMLRequest
        Reference

据我所见,它应该是这样的:

userList.getXMLRequest.getReference();

但是,您尝试检索:

userListRequest.getReference();

我不知道你是如何编写你的 POJO 模型的,但那里有些东西。尝试检查此架构是否正确实现,然后再进行其他任何操作。

【讨论】:

  • 如果 userListRequest 本身为空怎么办?
  • 为什么会自动假设 OP 使用 eclipse?
  • 关于userListRequest:他使用System.out.println("Number:"+userListRequest.getNumber());并且它不会崩溃,所以userListRequest在那里不为空。关于 Eclipse,确实是我的错。为了你的价值传递,我无法帮助你,Rajeswari。它可能来自您的配置,来自您的 SOAP 模型化,来自您在 SoapUI 和 Java 之间的链接。对于这个问题,您可以探索很多。
  • @RajeswariReddy 不是。但是由于您没有显示您通过的是什么,或者您是如何配置所有内容的,因此我们对此无话可说。无论哪种方式:它并不是说 JVM 只是说“我想在星期一搞砸这个家伙”,如果它被正确传递,它就不会为空。检查类型,检查传递/接受/配置参数的方式,调试并检查实际接收它的值
  • 由于您不愿意尝试我和其他人建议您尝试的调试器,因此您可能希望在输入方法时执行此操作.... System.out.println(request. toString());或 System.out.println(request);。通过调试或将请求对象发送到控制台将允许您查看传入的内容。如果您可以分享,那么人们可能更愿意提供帮助。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 2020-11-23
  • 2019-05-27
  • 1970-01-01
  • 2019-04-08
相关资源
最近更新 更多