我正在尝试使用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。任何人都可以帮我解决这个问题。
答案 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模型的,但有些东西不在那里。尝试在其他任何事情之前检查这种架构是否正确实现。