Call Webservice in post function

Mike Whitlock July 7, 2013

Hello all,

I am tyring to call a web service in a post function. I am used SOAPSonar first to test and I can load the wsdl and complete the web service successfully. I copied the xml that SOAPSonar used directly into the code below. I am testing this with Groovy script runner...

import javax.xml.namespace.QName
import javax.xml.ws.Service
import java.net.URL
import groovy.swing.SwingBuilder
import javax.swing.ImageIcon
import org.apache.commons.codec.binary.Base64
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import groovy.xml.DOMBuilder
import groovy.xml.dom.DOMCategory
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;

PostMethod post = new PostMethod("http://servernameXX/arsys/WSDL/public/serverXX/HPD_IncidentInterface_Create_WS?wsdl");

def xml = """<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s0="urn:HPD_IncidentInterface_Create_WS">
<soap:Header>
<s0:AuthenticationInfo>
<s0:userName>mikewhitlock</s0:userName>
<s0:password>Password</s0:password>
</s0:AuthenticationInfo>
</soap:Header>
<soap:Body>
<s0:HelpDesk_Submit_Service>
<s0:First_Name>Michael</s0:First_Name>
<s0:Impact>3-Moderate/Limited</s0:Impact>
<s0:Last_Name>Whitlock</s0:Last_Name>
<s0:Reported_Source>External Escalation</s0:Reported_Source>
<s0:Service_Type>User Service Request</s0:Service_Type>
<s0:Status>New</s0:Status>
<s0:Action>CREATE</s0:Action>
<s0:Create_Request>Yes</s0:Create_Request>
<s0:Summary>Test Web Service 4</s0:Summary>
<s0:Notes>Test Web Service 1 Notes</s0:Notes>
<s0:Urgency>3-Medium</s0:Urgency>
<s0:Work_Info_Summary/>
<s0:Work_Info_Notes/>
<s0:Work_Info_Type>----- Customer Inbound -----</s0:Work_Info_Type>
<s0:Work_Info_Date/>
<s0:Work_Info_Source>Email</s0:Work_Info_Source>
<s0:Work_Info_Locked>Yes</s0:Work_Info_Locked>
<s0:Work_Info_View_Access>Internal</s0:Work_Info_View_Access>
</s0:HelpDesk_Submit_Service>
</soap:Body>
</soap:Envelope>"""

def langs = new XmlParser().parseText(xml);
post.setRequestEntity(new StringRequestEntity(xml, "text/xml", "ISO-8859-1"));
post.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");
HttpClient httpclient = new HttpClient();
int result = httpclient.executeMethod(post);
String rep = post.getResponseBodyAsString();

I know it is connecting because if I comment out the last line I get a response of 200. If I include the final line I get this as a response...

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:HPD_IncidentInterface_Create_WS" xmlns:s0="urn:HPD_IncidentInterface_Create_WS" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <wsdl:types>
  <xsd:schema elementFormDefault="qualified" targetNamespace="urn:HPD_IncidentInterface_Create_WS">
   <xsd:element name="HelpDesk_Submit_Service" type="s0:CreateInputMap"/>
   <xsd:complexType name="CreateInputMap">
    <xsd:sequence>
     <xsd:element name="Assigned_Group" type="xsd:string"/>
     <xsd:element name="Assigned_Group_Shift_Name" type="xsd:string"/>
     <xsd:element name="Assigned_Support_Company" type="xsd:string"/>
     <xsd:element name="Assigned_Support_Organization" type="xsd:string"/>
     <xsd:element name="Assignee" type="xsd:string"/>
     <xsd:element name="Categorization_Tier_1" type="xsd:string"/>
     <xsd:element name="Categorization_Tier_2" type="xsd:string"/>
     <xsd:element name="Categorization_Tier_3" type="xsd:string"/>
     <xsd:element name="CI_Name" type="xsd:string"/>
     <xsd:element name="Closure_Manufacturer" type="xsd:string"/>
     <xsd:element name="Closure_Product_Category_Tier1" type="xsd:string"/>
     <xsd:element name="Closure_Product_Category_Tier2" type="xsd:string"/>
     <xsd:element name="Closure_Product_Category_Tier3" type="xsd:string"/>
     <xsd:element name="Closure_Product_Model_Version" type="xsd:string"/>
     <xsd:element name="Closure_Product_Name" type="xsd:string"/>
     <xsd:element name="Department" type="xsd:string"/>
     <xsd:element name="First_Name" type="xsd:string"/>
     <xsd:element name="Impact" type="s0:ImpactType"/>
     <xsd:element name="Last_Name" type="xsd:string"/>
     <xsd:element name="Lookup_Keyword" type="xsd:string"/>
     <xsd:element name="Manufacturer" type="xsd:string"/>
     <xsd:element name="Product_Categorization_Tier_1" type="xsd:string"/>
     <xsd:element name="Product_Categorization_Tier_2" type="xsd:string"/>
     <xsd:element name="Product_Categorization_Tier_3" type="xsd:string"/>
     <xsd:element name="Product_Model_Version" type="xsd:string"/>
     <xsd:element name="Product_Name" type="xsd:string"/>
     <xsd:element name="Reported_Source" type="s0:Reported_SourceType"/>
     <xsd:element name="Resolution" type="xsd:string"/>
     <xsd:element name="Resolution_Category_Tier_1" type="xsd:string"/>
     <xsd:element name="Resolution_Category_Tier_2" type="xsd:string"/>
     <xsd:element name="Resolution_Category_Tier_3" type="xsd:string"/>
     <xsd:element name="Service_Type" type="s0:Service_TypeType"/>
     <xsd:element name="Status" type="s0:StatusType"/>
     <xsd:element name="Action" type="xsd:string"/>
     <xsd:element name="Create_Request" type="s0:Create_RequestType"/>
     <xsd:element name="Summary" type="xsd:string"/>
     <xsd:element name="Notes" type="xsd:string"/>
     <xsd:element name="Urgency" type="s0:UrgencyType"/>
     <xsd:element name="Work_Info_Summary" type="xsd:string"/>
     <xsd:element name="Work_Info_Notes" type="xsd:string"/>
     <xsd:element name="Work_Info_Type" type="s0:Work_Info_TypeType"/>
     <xsd:element name="Work_Info_Date" type="xsd:dateTime"/>
     <xsd:element name="Work_Info_Source" type="s0:Work_Info_SourceType"/>
     <xsd:element name="Work_Info_Locked" type="s0:Create_RequestType"/>
     <xsd:element name="Work_Info_View_Access" type="s0:Work_Info_View_AccessType"/>
    </xsd:sequence>
   </xsd:complexType>
   <xsd:simpleType name="ImpactType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="1-Extensive/Widespread"/>
     <xsd:enumeration value="2-Significant/Large"/>
     <xsd:enumeration value="3-Moderate/Limited"/>
     <xsd:enumeration value="4-Minor/Localized"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="Reported_SourceType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="Direct Input"/>
     <xsd:enumeration value="Email"/>
     <xsd:enumeration value="External Escalation"/>
     <xsd:enumeration value="Fax"/>
     <xsd:enumeration value="Systems Management"/>
     <xsd:enumeration value="Phone"/>
     <xsd:enumeration value="Voice Mail"/>
     <xsd:enumeration value="Walk In"/>
     <xsd:enumeration value="Web"/>
     <xsd:enumeration value="Other"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="Service_TypeType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="User Service Restoration"/>
     <xsd:enumeration value="User Service Request"/>
     <xsd:enumeration value="Infrastructure Restoration"/>
     <xsd:enumeration value="Infrastructure Event"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="StatusType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="New"/>
     <xsd:enumeration value="Assigned"/>
     <xsd:enumeration value="In Progress"/>
     <xsd:enumeration value="Pending"/>
     <xsd:enumeration value="Resolved"/>
     <xsd:enumeration value="Closed"/>
     <xsd:enumeration value="Cancelled"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="Create_RequestType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="Yes"/>
     <xsd:enumeration value="No"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="UrgencyType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="1-Critical"/>
     <xsd:enumeration value="2-High"/>
     <xsd:enumeration value="3-Medium"/>
     <xsd:enumeration value="4-Low"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="Work_Info_TypeType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="----- Customer Inbound -----"/>
     <xsd:enumeration value="Customer Communication"/>
     <xsd:enumeration value="Customer Follow-up"/>
     <xsd:enumeration value="Customer Status Update"/>
     <xsd:enumeration value="----- Customer Outbound -----"/>
     <xsd:enumeration value="Closure Follow Up"/>
     <xsd:enumeration value="Detail Clarification"/>
     <xsd:enumeration value="General Information"/>
     <xsd:enumeration value="Resolution Communications"/>
     <xsd:enumeration value="Satisfaction Survey"/>
     <xsd:enumeration value="Status Update"/>
     <xsd:enumeration value="----- General -----"/>
     <xsd:enumeration value="Incident Task / Action"/>
     <xsd:enumeration value="Problem Script"/>
     <xsd:enumeration value="Working Log"/>
     <xsd:enumeration value="Email System"/>
     <xsd:enumeration value="Paging System"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="Work_Info_SourceType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="Email"/>
     <xsd:enumeration value="Fax"/>
     <xsd:enumeration value="Phone"/>
     <xsd:enumeration value="Voice Mail"/>
     <xsd:enumeration value="Walk In"/>
     <xsd:enumeration value="Pager"/>
     <xsd:enumeration value="System Assignment"/>
     <xsd:enumeration value="Web"/>
     <xsd:enumeration value="Other"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="Work_Info_View_AccessType">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="Internal"/>
     <xsd:enumeration value="Public"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:element name="HelpDesk_Submit_ServiceResponse" type="s0:CreateOutputMap"/>
   <xsd:complexType name="CreateOutputMap">
    <xsd:sequence>
     <xsd:element name="Incident_Number" type="xsd:string"/>
    </xsd:sequence>
   </xsd:complexType>
   <xsd:element name="AuthenticationInfo" type="s0:AuthenticationInfo"/>
   <xsd:complexType name="AuthenticationInfo">
    <xsd:sequence>
     <xsd:element name="userName" type="xsd:string"/>
     <xsd:element name="password" type="xsd:string"/>
     <xsd:element minOccurs="0" name="authentication" type="xsd:string"/>
     <xsd:element minOccurs="0" name="locale" type="xsd:string"/>
     <xsd:element minOccurs="0" name="timeZone" type="xsd:string"/>
    </xsd:sequence>
   </xsd:complexType>
  </xsd:schema>
 </wsdl:types>

   <wsdl:message name="ARAuthenticate">

      <wsdl:part element="s0:AuthenticationInfo" name="parameters"/>

   </wsdl:message>

   <wsdl:message name="HelpDesk_Submit_ServiceSoapIn">

      <wsdl:part element="s0:HelpDesk_Submit_Service" name="parameters"/>

   </wsdl:message>

   <wsdl:message name="HelpDesk_Submit_ServiceSoapOut">

      <wsdl:part element="s0:HelpDesk_Submit_ServiceResponse" name="parameters"/>

   </wsdl:message>

   <wsdl:portType name="HPD_IncidentInterface_Create_WSPortType">

      <wsdl:operation name="HelpDesk_Submit_Service">

         <wsdl:input message="s0:HelpDesk_Submit_ServiceSoapIn"/>

         <wsdl:output message="s0:HelpDesk_Submit_ServiceSoapOut"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="HPD_IncidentInterface_Create_WSSoapBinding" type="s0:HPD_IncidentInterface_Create_WSPortType">

      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="HelpDesk_Submit_Service">

         <soap:operation soapAction="urn:HPD_IncidentInterface_Create_WS/HelpDesk_Submit_Service" style="document"/>

         <wsdl:input>

            <soap:header message="s0:ARAuthenticate" part="parameters" use="literal">

            </soap:header>

            <soap:body use="literal"/>

         </wsdl:input>

         <wsdl:output>

            <soap:body use="literal"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="HPD_IncidentInterface_Create_WSService">

  <wsdl:documentation>
HelpDesk_Submit_Service Create  </wsdl:documentation>

      <wsdl:port binding="s0:HPD_IncidentInterface_Create_WSSoapBinding" name="HPD_IncidentInterface_Create_WSSoap">

         <soap:address location="http://servernameXX/arsys/services/ARService?server=serverXX&amp;webService=HPD_IncidentInterface_Create_WS"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:defintions>


Any ideas????? I am wondering if the code I have is getting to the SOAP operation 'HelpDesk_Submit_Service'. I am really not too sure though.

Please help.

Thanks,
Mike Whitlock

3 answers

1 accepted

0 votes
Answer accepted
Mike Whitlock July 7, 2013

Once again... once I post I figure it out myself even though I have been working on this throughout the weekend...

post.setRequestHeader("SOAPAction", "urn:HPD_IncidentInterface_Create_WS/HelpDesk_Submit_Service");

0 votes
JamieA
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 7, 2013

IIRC you can just add a new header using httpclient.

Personally I would forget coding it in groovy until you can verify that you can get a sensible response using fiddler. When that's working, you can compare what jira sends by proxying through fiddler.

0 votes
Mike Whitlock July 7, 2013

Update...

I added this line...

post.setURI(new URI("http://servernameXX/arsys/services/ARService?server=XX&webService=HPD_IncidentInterface_Create_WS"));

and now I get the following...

<?xml version="1.0" encoding="ISO-8859-1"?><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>
  <soapenv:Fault>
   <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
   <faultstring>no SOAPAction header!</faultstring>
   <detail>
    <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">aix4057.ercot.com</ns2:hostname>
   </detail>
  </soapenv:Fault>
 </soapenv:Body>
</soapenv:Envelope>



This is exactly what I was thinking... I am not pointing my xml to the SOAPAction of 'HelpDesk_Submit_Service'

So does anyone know how to do that????

Suggest an answer

Log in or Sign up to answer