I have a SOAP request that I've tested in SoapUI. I successfully get the desired response.
The problem in my code occurs when I'm testing whether or not the response was successful at if (isSuccessResponse(soapResponse)) {
below:
public static void main(String[] args) throws Exception {
// Establish SOAP connection
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
// Generate SOAP request
SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(), namespaceURI);
// Test to see if SOAP response is available
System.out.print("SOAP Response:");
System.out.println();
soapResponse.writeTo(System.out);
// Close connection
soapConnection.close();
if (isSuccessResponse(soapResponse)) {
System.out.println("Success!");
} else {
System.out.println("Fault!");
}
}
Success?
private static boolean isSuccessResponse(SOAPMessage soapResponse) throws Exception {
NodeList responseNodes = soapResponse.getSOAPBody().getElementsByTagNameNS("*", "HelpDesk_QueryList_Service");
if (responseNodes.getLength() == 1)
return true;
else
return false;
}
Request: This code does in fact print out the correct request as it is identical to the working request in SoapUI. So why can't I get the related relevant information from the actual response? The printed response is the blank default response with all the of requisite headers but none of the desired information from my request:
private static SOAPMessage createSOAPRequest() throws Exception {
MessageFactory messageFactory = MessageFactory.newInstance();
// Create SOAP Message
SOAPMessage soapMessage = messageFactory.createMessage();
// Add request envelope, headers, and nodes from SOAP request
SOAPPart soapPart = soapMessage.getSOAPPart();
// I used ? here for privacy reasons
String xmlns = "?";
String username = "?";
String password = "?";
String qualification = "'?";
SOAPEnvelope envelope = soapPart.getEnvelope();
envelope.addNamespaceDeclaration("urn", xmlns);
SOAPHeader soapHeader = envelope.getHeader();
SOAPElement authInfoElem = soapHeader.addChildElement("AuthenticationInfo", "urn");
createElementAndSetText(authInfoElem, "userName", username);
createElementAndSetText(authInfoElem, "password", password);
SOAPBody soapBody = envelope.getBody();
SOAPElement bodyElem = soapBody.addChildElement("HelpDesk_QueryList_Service", "urn");
createElementAndSetText(bodyElem, "Qualification", qualification);
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", xmlns + "/HelpDesk_QueryList_Service");
// Save request
soapMessage.saveChanges();
// Print the request message
System.out.print("SOAP Request:");
System.out.println();
soapMessage.writeTo(System.out);
System.out.println();
System.out.println();
return soapMessage;
}
Error: I get the following error but I'm not sure why.
Lis 07, 2016 6:10:34 ODP. com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl lookForEnvelope
SEVERE: SAAJ0514: Unable to create envelope from given source because the root element is not named Envelope
Lis 07, 2016 6:10:34 ODP. com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory createEnvelope
SEVERE: SAAJ0511: Unable to create envelope from given source
Exception in thread "main" com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:
at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:117)
at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:128)
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:1351)
at com.xxxx.automation.remedy.RemedySOAPService.isSuccessResponse(RemedySOAPService.java:135)
at com.xxxx.automation.remedy.RemedySOAPService.main(RemedySOAPService.java:52)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source because the root element is not named "Envelope"
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.lookForEnvelope(SOAPPartImpl.java:154)
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:121)
at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:110)
... 5 more
CAUSE:
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source because the root element is not named "Envelope"
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.lookForEnvelope(SOAPPartImpl.java:154)
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:121)
at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:110)
at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:128)
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:1351)
at com.xxxx.automation.remedy.RemedySOAPService.isSuccessResponse(RemedySOAPService.java:135)
at com.xxxx.automation.remedy.RemedySOAPService.main(RemedySOAPService.java
:52)
SOAP Response:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns0:HelpDesk_QueryList_ServiceResponse xmlns:ns0="urn:XX:XXXX:HPD_IncidentInterface_WS">
<ns0:getListValues>
<ns0:Assigned_Group>XXXX</ns0:Assigned_Group>
<ns0:Assigned_Group_Shift_Name/>
<ns0:Assigned_Support_Company>XXXX</ns0:Assigned_Support_Company>
<ns0:Assigned_Support_Organization>XXXX</ns0:Assigned_Support_Organization>
<ns0:Assignee/>
<ns0:Categorization_Tier_1/>
<ns0:Categorization_Tier_2/>
<ns0:Categorization_Tier_3/>
<ns0:City/>
<ns0:Closure_Manufacturer/>
<ns0:Closure_Product_Category_Tier1>XXXX</ns0:Closure_Product_Category_Tier1>
<ns0:Closure_Product_Category_Tier2>XXXX</ns0:Closure_Product_Category_Tier2>
<ns0:Closure_Product_Category_Tier3/>
<ns0:Closure_Product_Model_Version/>
<ns0:Closure_Product_Name/>
<ns0:Company>XXXX</ns0:Company>
<ns0:Contact_Company>XXXX</ns0:Contact_Company>
<ns0:Contact_Sensitivity>Standard</ns0:Contact_Sensitivity>
<ns0:Country/>
<ns0:Department>XXXX</ns0:Department>
<ns0:Summary>XXXX</ns0:Summary>
<ns0:Notes/>
<ns0:First_Name>XXXX</ns0:First_Name>
<ns0:Impact>4-Minor/Localized</ns0:Impact>
<ns0:Incident_Number>XXXX</ns0:Incident_Number>
<ns0:Internet_E-mail>XXXX</ns0:Internet_E-mail>
<ns0:Last_Name>XXXX</ns0:Last_Name>
<ns0:Manufacturer/>
<ns0:Organization>XXXX</ns0:Organization>
<ns0:Phone_Number>XXXX</ns0:Phone_Number>
<ns0:Priority>Low</ns0:Priority>
<ns0:Priority_Weight>0</ns0:Priority_Weight>
<ns0:Product_Categorization_Tier_1>XXXX</ns0:Product_Categorization_Tier_1>
<ns0:Product_Categorization_Tier_2>XXXX</ns0:Product_Categorization_Tier_2>
<ns0:Product_Categorization_Tier_3/>
<ns0:Product_Model_Version/>
<ns0:Product_Name/>
<ns0:Region/>
<ns0:Reported_Source xsi:nil="true"/>
<ns0:Resolution/>
<ns0:Resolution_Category/>
<ns0:Resolution_Category_Tier_2/>
<ns0:Resolution_Category_Tier_3/>
<ns0:Service_Type>User Service Restoration</ns0:Service_Type>
<ns0:Site>XXXX</ns0:Site>
<ns0:Site_Group>XXXX</ns0:Site_Group>
<ns0:Status>Cancelled</ns0:Status>
<ns0:Status_Reason xsi:nil="true"/>
<ns0:Urgency>4-Low</ns0:Urgency>
<ns0:VIP>No</ns0:VIP>
<ns0:ServiceCI/>
<ns0:ServiceCI_ReconID/>
<ns0:HPD_CI/>
<ns0:HPD_CI_ReconID/>
<ns0:HPD_CI_FormName/>
<ns0:z1D_CI_FormName/>
<ns0:Vendor_Ticket_Number xsi:nil="true"/>
<ns0:Corporate_ID>XXXX</ns0:Corporate_ID>
<ns0:Submitter>XXXX</ns0:Submitter>
<ns0:Pending_Date xsi:nil="true"/>
</ns0:getListValues>
</ns0:HelpDesk_QueryList_ServiceResponse>
</soapenv:Body>
</soapenv:Envelope>