---
title: "Task ps-request (obsolete)"
source: https://dev.pageseeder.com/reference/version_5/ant_tasks/task_ps-request.html
last_updated: 2026-08-11T16:09:52+10:00
tokens: ~1976
---

# Task ps-request

> **Obsolete:** This task has been removed as of PageSeeder v6. Use [Task request](../../../guide/publishing/ant_api/tasks/task_request.md) instead.

Allows Ant scripts to request data and write it to a file in a designated location.

## Definition

```xml

<ps:ps-request
           jsessionid="[jsessionid]"
                       port="[port]"
                       host="[host]"
           siteprefix="[siteprefix]"
     servletprefix="[servletprefix]"
            servlet="[servlet path]"
                   output="[output]"
                   method="[method]">
      <parameter name="[param name]"
               value="[param value]"/>

                                 or

 <fileset dir="[requests directory]"
           includes="[requests.xml]" />
</ps:ps-request>
```

## Attributes

| **Attribute** | Description | Required |
| --- | --- | --- |
| **jsessionid** | Used for authentication, this attribute is optional. However, it will always be used if specified. | Yes, unless **username/password** or **propertiesfile** are specified |
| **username** | If **jsessionid** is not specified this can be used for authentication. | Yes, unless **jsessionid** or **propertiesfile** are specified |
| **password** | If jsessionid is not specified this can be used for authentication. | Yes, unless **jsessionid** or **propertiesfile** are specified |
| **propertiesfile** | Describes the location of the properties file for connecting to the PageSeeder Server. The attribute value can be; the full path of the file, the relative path (*with the base directory the location of the Ant script*), or the file name (*in which case the file MUST be located on the classpath*). | Yes, unless **(jsessionid** or **username/password)** and **host** are specified |
| **port** | The port address of the PageSeeder Server - default: 80 *(used when no properties file is specified)* | No |
| **host** | The host name of the PageSeeder Server *(used when no properties file is specified)* | Yes, unless **propertiesfile** is specified |
| **siteprefix** | The PageSeeder site prefix defined - default: /ps *(used when no properties file is specified)* | No |
| **servletprefix** | The PageSeeder servlet prefix defined - for services use /service - default: /servlet *(used when no properties file is specified)* | No |
| **output** | Specifies the path of the file to write the response to | Yes |
| **servlet** | Specifies the servlet to be executed or the service URL  if servletprefix=/service | Yes |
| **method** | Specifies the method of the request POST or GET. | Yes |

## Nested Elements

Nested elements are **parameters** that are added to the Request when connecting to the PageSeeder server. For the two types of Request tasks, nested elements work as follows:

### Single Request

Each `<parameter>` element has attributes for `@name` and `@value`:

```xml

       <parameter name="[param name]" value="[param value]" />
```

### Multiple Requests

All Requests are made to the same servlet with different Parameter elements expressed in one or more **Request Files**. A Request File is a UTF-8-encoded XML document that expresses the parameters for a single request in the following syntax:

```xml

<request>
  <parameter name="x">a</parameter>
  <parameter name="y">b</parameter>
</request>
```

Optionally a `<servlet path="p"/>` element can be added to change the servlet path for a request.

```xml

<request>
  <servlet path="p"/>
  <parameter name="x">a</parameter>
  <parameter name="y">b</parameter>
</request>
```

Processed in alphabetical path order, each Request has a Response written to the output file as follows:

```xml

<responses>
  <response filepath="z/d.xml">
  ...
  </response>
  <response filepath="z/e.xml">
  ...
  </response>
</responses>
```

## Example Scripts – Stand-alone

### Get the content of an XLink

```xml

<ps:ps-request
    servlet="com.pageseeder.XLinkThread" method="GET"
    host="mycompany.com" output="c:\output\results.xml"
    username="jsmith" password="xyz" >
  <parameter name="xl" value="123"/>
</ps:ps-request>
```

### Create multiple comments using a service

```xml
<ps:ps-request
    servletprefix="/service" servlet="/comments/forurl" method="POST"
    host="mycompany.com" output="c:\output\results.xml"
    username="jsmith" password="xyz" >
  <fileset dir="c:\input\comments">
    <include name="*.*"/>
  </fileset>
</ps:ps-request>
```

Files in `c:\input\comments`:

**request1.xml**

```xml
<?xml version="1.0" encoding="utf-8" ?>
<request>
  <parameter name="url">http://www.mysite.com/</parameter>
  <parameter name="title">My Comment</parameter>
  <parameter name="groups">test-mygroup</parameter>
  <parameter name="content">Hello world!</parameter>
  <parameter name="authorname">John Jones</parameter>
</request>
```

**request2.xml**

```xml
<?xml version="1.0" encoding="utf-8" ?>
<request>
  <parameter name="url">http://www.mysite.com/</parameter>
  <parameter name="title">My Comment 2</parameter>
  <parameter name="groups">test-mygroup</parameter>
  <parameter name="content">Hello again world!</parameter>
  <parameter name="authorname">John Jones</parameter>
</request>
```

### Edit a Document ** Section

Useful for programmatically editing documents but it requires knowing the ID of the Fragments. This typically means defining the Fragment ID from the start rather than using the PageSeeder-generated ID.

```xml
<input message="URI ID for document:" addproperty="uriid"/>
<input message="Fragment ID in document:" addproperty="fragmentid"/>
<input message="Group Name:" addproperty="groupname"/>
<ps:ps-request
    servlet="com.pageseeder.InsertEditXLink" method="POST"
    host="mycompany.com" output="c:\output\results.xml"
    username="jsmith" password="xyz" >
  <parameter name="uri" value="${uriid}"/>
  <parameter name="loc" value="${fragmentid}"/>
  <parameter name="role" value="Documentation"/>
  <parameter name="contentType" value="text/xml"/>
  <parameter name="content" value="<body&gt;<para&gt;New 
content</para&gt;</body&gt;"/>
  <parameter name="groups" value="${groupname}"/>
  <parameter name="title" value="Document Change"/>
</ps:ps-request>
```

## Example Scripts – PS Publish

### Get the content of an XLink

```xml
<input message="Comment ID:" addproperty="xlinkid"/>
<ps:ps-request
    servlet="com.pageseeder.XLinkThread" method="GET"
    output="${ps-working}/results.xml"
    jsessionid="${ps-jsessionid}" host="${ps-host}" port="${ps-port}"
    servletPrefix="${ps-servletPrefix}" sitePrefix="${ps-sitePrefix}" >
  <parameter name="xl" value="${xlinkid}"/>
</ps:ps-request>
```

### Create A Task

It is important to note that there is no validation of the values that correspond to \<`name>` attributes such as `@status` and `@priority`. The allowable values for these fields can be edited using <u>**Group – Properties**</u> but it is the developers responsibility to ensure integrity between the Properties and their code.

```xml

<ps:ps-request host="${ps-host}" port="${ps-port}" 
      sitePrefix="${ps-sitePrefix}" jsessionid="${ps-jsessionid}"
      output="${ps-working}/psrequest/request-response.xml"
      method="POST" servletPrefix="${ps-servletPrefix}"
      servlet="com.pageseeder.InsertXLinkFormDo">
      <parameter name="role" value="Comment"/>
      <parameter name="groupName" value="${ps-groupName}"/>
      <parameter name="groups" value="${ps-groupName}"/>
      <parameter name="status" value="Open"/>
      <parameter name="priority" value="Low"/>
      <parameter name="broadcast" value="Yes"/>
      <parameter name="title" value="(Task) -  ${task-name}
                                      Finish on ${current.time}"/>
      <parameter name="content" value=" ${task-name}
                                      Finished on ${current.time}"/>
      <parameter name="labels" value="publish-task"/>
    </ps:ps-request>
```

