---
sourceDocument: Xanadu API Reference
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - en-US

ft:publication_title :

    - Xanadu API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Persist an HTTP session across all SOAP calls

# Persist an HTTP session across all SOAP calls {#ariaid-title1}

* Release version: Xanadu
* 
* Updated August 1, 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 1 minute to read

In circumstances when a SOAP client makes many calls in a short amount of time, you may
want to re-use a single HTTP session for all SOAP calls.  
Each SOAP call creates a new user session that persists until it expires. To create a single user session and re-use it for all inbound SOAP calls, develop your SOAP client following these guidelines:

* Use a module like HTTP::Cookies to create a "cookie jar."
* Save the cookies returned by ServiceNow after each request (handled automatically by HTTP::Cookies).
* Re-send the cookies in the cookie jar with each subsequent request.

{#persist-session-all-soap-calls__ul_xt2_khy_5w}  
Note:  
If you have enabled the session rotation high security setting, it will immediately invalidate the JSESSIONID returned from the server with the first response header. The second response includes a new JSESSIONID.  
In perl, you can automatically save and send cookies with the following code:

    use HTTP::Cookies;

    #we want to store and re-send cookies
    my $cookies = HTTP::Cookies->new(ignore_discard => 1);

    my $soap = SOAP::Lite
        -> proxy('http://localhost:8080/glide/ecc_queue.do?SOAP');

    #Set the cookie jar
    $soap->transport->cookie_jar($cookies);

**Related concepts**   

* [Use forms to limit or extend the query response](https://servicenow-prod.fluidtopics.net/m7tyIZhLJata4jEK0zNK0A "On occasion, there is a need to limit the number of field values that a SOAP query returns.")
* [Return the display value for reference variables](https://servicenow-prod.fluidtopics.net/ghcpgTLmrDFjbwT8JPlfZQ "When you query a record using a get or getRecords function, the instance returns all fields associated with that record. The fields are often reference fields that contain a sys_id for a record on another table.")
* [Clear values from a target instance](https://servicenow-prod.fluidtopics.net/ibHtp5YxHam~07bgelX3KA "You can pass an empty value through a SOAP parameter to clear the respective value in the target instance.")
* [Retrieve journal entries using direct web services](https://servicenow-prod.fluidtopics.net/We_rrkdN~9_4C2eEVbCrFQ "To get the contents of a journal field, make a second soap request against the sys_journal_field table to pull the appropriate journal records back for the record in question.")
* [Retrieve choice fields using direct web services](https://servicenow-prod.fluidtopics.net/UKRQMVoU2VrWpJeY0VWVIw "To retrieve or set choice fields, use the choice Value, not the Label.")  
**Related reference**   

* [SOAP direct web service API functions](https://servicenow-prod.fluidtopics.net/ScwF7nQVmMA5sgyQUQvOxg "The standard SOAP API is a set of small, globally defined functions that can be performed on a targeted resource.")

