Call Webservice in post function

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

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");

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????
0 vote

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.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published yesterday in Jira

5 ways you can make the most of Jira Software and Bitbucket Cloud

As part of the Bitbucket product team I'm always interested in better understanding what kind of impact the use of our tools have on the way you work. In a recent study we conducted of software devel...

59 views 0 5
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you