////
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at
  http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
////
:documentationPath: /pipeline/transforms/
:language: en_US
:description: The HTTP Post transform uses an HTTP POST command to submit form data via a URL.

= image:transforms/icons/httppost.svg[HTTP Post transform Icon, role="image-doc-icon"] HTTP Post

[%noheader,cols="3a,1a", role="table-no-borders" ]
|===
|
== Description

The HTTP Post transform uses an HTTP POST command to submit form data via a URL.

|
== Supported Engines
[%noheader,cols="2,1a",frame=none, role="table-supported-engines"]
!===
!Hop Engine! image:check_mark.svg[Supported, 24]
!Spark! image:question_mark.svg[Maybe Supported, 24]
!Flink! image:question_mark.svg[Maybe Supported, 24]
!Dataflow! image:question_mark.svg[Maybe Supported, 24]
!===
|===

== Options

=== General Tab

The General tab defines which RSS/Atom URLs you want to use, and optionally which fields contain the URLs.

[options="header"]
|===
|Option|Description
|URL|The Web service URL to submit to.
|Accept URL from field?|If checked, you must specify which field to retrieve the URL from.
|URL field name|If the previous option is checked, this is where you specify the URL field.
|Encoding|The encoding standard for the files being accessed.
|Request entity field|The name of the field that will contain the POST request.
When enabled, the Post a file option will retrieve the file named in this field, and post the contents of that file.
|Post a file|If a file is defined in the Request entity field, its contents will be posted if this option is checked.
Currently "Request entity field" must be filled in order for "Post a file" to work.
Selecting "Post a file" and specifying a field under "Body parameters" without selecting a value for "Request entity field" (the place for the file name) will fail silently.
|Use MultiPart Upload|This will send the data to the server in the form of a multipart request, this is useful when posting files
|Connection timeout|Defines the timeout (defaults to 10000) in Milliseconds when a connection attempt will error out.
|Socket timeout|Defines the timeout (defaults to 10000) in Milliseconds when a socket will error out.
|Connection close wait time|Define the wait time after the connection is closed in Milliseconds, the default -1 means the default wait time from the operating system (often 2 minutes).
Background information: Each row opens a connection and keeps it in a so called TIME-WAIT state for a specific time.
A lot (may be thousands) of connections in a TIME-WAIT state introduce significant memory overhead.
This option can reduce this memory overhead by reducing the time to keep a closed connection in a TIME-WAIT state.
|Result fieldname|The field that you want to post the result output to.
|HTTP status code fieldname|The field that you want to post the status code output to.
|Response time (milliseconds) fieldname|The field that you want to post the response time, in milliseconds, to.
|HTTP login|If this form requires authentication, this field should contain the username.
|HTTP password|If this form requires authentication, this field should contain the password that corresponds with the username.
|Proxy host|Hostname or IP address of the proxy server, if you use one.
|Proxy port|Port number of the proxy server, if you use one.
|===

=== Fields tab: Body (Header) Parameters

The Fields tab defines parameters for the HTTP request header and body.
If you've filled in the URL and other necessary details in the General tab, you can use the Get values buttons to pre-populate the fields here.
Body parameters are used in POST and PUT operations.

[options="header"]
|===
|Option|Description
|#|The order that this parameter will be passed to the Web application.
|Name|The name of the field that contains the value to map to the parameter.
|Parameter|The parameter to map the value of Name to.
|Put in Header?|If set to Y, the parameter will be put into the request header.
|===

=== Fields tab: Query Parameters

The Fields tab defines parameters for the HTTP request header and body.
If you've filled in the URL and other necessary details in the General tab, you can use the Get values buttons to pre-populate the fields here.
Query parameters are specified in the URL and can be used in any HTTP method.

[options="header"]
|===
|Option|Description
|#|The order that this parameter will be passed to the Web application.
|Name|The name of the field that contains the value to map to the parameter.
|Value|The value to map to the parameter.
|===

