Sample code for 30+ languages & platforms
Java

Simple SOAP Request

See more HTTP Examples

Demonstrates how to send a simple SOAP request.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.Xml;

public class ChilkatExample {

    public static void main(String[] args) {
        // --------------------------------------------------------------------------------
        // Also see Chilkat's Online WSDL Code Generator
        // to generate code and SOAP Request and Response XML for each operation in a WSDL.
        // --------------------------------------------------------------------------------

        // Create the following XML to be sent in the SOAP request body.

        // <soapenv:Envelope xmlns:dat="http://www.dataaccess.com/webservicesserver/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        //     <soapenv:Header/>
        //     <soapenv:Body>
        //         <dat:NumberToDollars>
        //             <dat:dNum>99.0</dat:dNum>
        //         </dat:NumberToDollars>
        //     </soapenv:Body>
        // </soapenv:Envelope>

        Xml xml = new Xml();
        xml.setTag("soapenv:Envelope");
        xml.addAttribute("xmlns:dat", "http://www.dataaccess.com/webservicesserver/");
        xml.addAttribute("xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
        xml.updateChildContent("soapenv:Header", "");
        xml.updateChildContent("soapenv:Body|dat:NumberToDollars|dat:dNum", "99.0");

        // In a SOAP HTTP request, including the XML declaration (<?xml version="1.0" encoding="UTF-8"?>) in the XML body is generally not required.
        xml.setEmitXmlDecl(false);
        String soapRequestBody = xml.getXml();

        String endpoint = "https://www.dataaccess.com/webservicesserver/numberconversion.wso";
        String soapAction = "";
        //  For SOAP requests, the standard Content-Type is usually set to "text/xml" or "application/soap+xml"
        String contentType = "text/xml";

        Http http = new Http();

        http.clearHeaders();
        http.setRequestHeader("SOAPAction", soapAction);

        HttpResponse resp = new HttpResponse();
        try {
            http.httpStr("POST", endpoint, soapRequestBody, "utf-8", contentType, resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Get the XML response body.
        Xml responseXml = new Xml();
        resp.getBodyXml(responseXml);

        int statusCode = resp.getStatusCode();
        System.out.println("response status code: " + statusCode);

        // If the status code does not indicate succcess, then show the response XML,
        // which probably contains error information.
        if (statusCode != 200) {
            System.out.println(responseXml.getXml());
            return;
        }

        System.out.println(responseXml.getXml());

        // Parse the successful SOAP response XML.

        // This is a sample of the response XML, but the namespace prefixes will be different.
        // We can parse the result using "*" for the namespace prefixes (see below).

        // <soapenv:Envelope xmlns:dat="http://www.dataaccess.com/webservicesserver/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        //     <soapenv:Header/>
        //     <soapenv:Body>
        //         <dat:NumberToDollarsResponse>
        //             <dat:NumberToDollarsResult>string</dat:NumberToDollarsResult>
        //         </dat:NumberToDollarsResponse>
        //     </soapenv:Body>
        // </soapenv:Envelope>

        String dat_NumberToDollarsResult = responseXml.getChildContent("*:Body|*:NumberToDollarsResponse|*:NumberToDollarsResult");
        System.out.println("result: " + dat_NumberToDollarsResult);
    }
}